From 6fc9b1599cd5155b1afb266dd023979e6c52aa83 Mon Sep 17 00:00:00 2001 From: Alvaro Nicoli Date: Mon, 5 Oct 2020 18:29:41 -0300 Subject: [PATCH 01/18] update dotnet version to 3.1 and reimplement --- .vscode/launch.json | 27 + .vscode/tasks.json | 42 + JsonApiDotNetCore.MongoDb.sln | 100 +- .../Data/MongoEntityRepository.cs | 177 +- .../JsonApiDotNetCore.MongoDb.csproj | 6 +- .../QueryableBuilding/QueryableBuilder.cs | 108 + .../Book.cs | 28 + ...JsonApiDotNetCore.MongoDb.UnitTests.csproj | 21 + ...CoreApp,Version=v3.0.AssemblyAttributes.cs | 4 + ...tNetCore.MongoDb.UnitTests.AssemblyInfo.cs | 23 + ...MongoDb.UnitTests.AssemblyInfoInputs.cache | 1 + ...iDotNetCore.MongoDb.UnitTests.assets.cache | Bin 0 -> 118268 bytes ...CoreApp,Version=v3.1.AssemblyAttributes.cs | 4 + ...tNetCore.MongoDb.UnitTests.AssemblyInfo.cs | 23 + ...MongoDb.UnitTests.AssemblyInfoInputs.cache | 1 + ...iDotNetCore.MongoDb.UnitTests.assets.cache | Bin 0 -> 102825 bytes ...Db.UnitTests.csprojAssemblyReference.cache | Bin 0 -> 13699 bytes ...tCore.MongoDb.UnitTests.csproj.nuget.cache | 5 + ...MongoDb.UnitTests.csproj.nuget.dgspec.json | 144 + ...ore.MongoDb.UnitTests.csproj.nuget.g.props | 20 + ...e.MongoDb.UnitTests.csproj.nuget.g.targets | 11 + .../obj/project.assets.json | 9033 +++++++++++++++++ test/UnitTests/.gitignore | 234 - test/UnitTests/UnitTests.csproj | 20 - 24 files changed, 9630 insertions(+), 402 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json create mode 100644 src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/Book.cs create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/.NETCoreApp,Version=v3.0.AssemblyAttributes.cs create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.assets.cache create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/.NETCoreApp,Version=v3.1.AssemblyAttributes.cs create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.assets.cache create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.csprojAssemblyReference.cache create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/JsonApiDotNetCore.MongoDb.UnitTests.csproj.nuget.cache create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/JsonApiDotNetCore.MongoDb.UnitTests.csproj.nuget.dgspec.json create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/JsonApiDotNetCore.MongoDb.UnitTests.csproj.nuget.g.props create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/JsonApiDotNetCore.MongoDb.UnitTests.csproj.nuget.g.targets create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/project.assets.json delete mode 100644 test/UnitTests/.gitignore delete mode 100644 test/UnitTests/UnitTests.csproj diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..072237e --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,27 @@ +{ + // Use IntelliSense to find out which attributes exist for C# debugging + // Use hover for the description of the existing attributes + // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md + "version": "0.2.0", + "configurations": [ + { + "name": ".NET Core Launch (console)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/test/JsonApiDotNetCore.MongoDb.UnitTests/bin/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.dll", + "args": [], + "cwd": "${workspaceFolder}/test/JsonApiDotNetCore.MongoDb.UnitTests", + // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console + "console": "internalConsole", + "stopAtEntry": false + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach", + "processId": "${command:pickProcess}" + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..0463b1e --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,42 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "${workspaceFolder}/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/JsonApiDotNetCore.MongoDb.sln b/JsonApiDotNetCore.MongoDb.sln index 5dbe7c9..54a91b2 100644 --- a/JsonApiDotNetCore.MongoDb.sln +++ b/JsonApiDotNetCore.MongoDb.sln @@ -1,44 +1,56 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27130.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JsonApiDotNetCore.MongoDb", "src\JsonApiDotNetCore.MongoDb\JsonApiDotNetCore.MongoDb.csproj", "{7F964050-3BB1-4E5C-8458-A974B956908F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{262566DF-A206-4026-8018-69C66936EFCF}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8EAC8B3B-BD8B-4FFF-8807-37FCA45BD8BD}" - ProjectSection(SolutionItems) = preProject - .gitignore = .gitignore - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests", "test\UnitTests\UnitTests.csproj", "{0AB9C87F-0A30-4875-B9BF-38F606E79734}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{AEA5DF2E-26B5-4D81-AA6A-ADA690E3E0D8}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7F964050-3BB1-4E5C-8458-A974B956908F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7F964050-3BB1-4E5C-8458-A974B956908F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7F964050-3BB1-4E5C-8458-A974B956908F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7F964050-3BB1-4E5C-8458-A974B956908F}.Release|Any CPU.Build.0 = Release|Any CPU - {0AB9C87F-0A30-4875-B9BF-38F606E79734}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0AB9C87F-0A30-4875-B9BF-38F606E79734}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0AB9C87F-0A30-4875-B9BF-38F606E79734}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0AB9C87F-0A30-4875-B9BF-38F606E79734}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {7F964050-3BB1-4E5C-8458-A974B956908F} = {262566DF-A206-4026-8018-69C66936EFCF} - {0AB9C87F-0A30-4875-B9BF-38F606E79734} = {AEA5DF2E-26B5-4D81-AA6A-ADA690E3E0D8} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {F7741F43-2CB1-4C5E-9886-FDCB0B973E30} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26124.0 +MinimumVisualStudioVersion = 15.0.26124.0 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{C9B4CDB0-2411-44A7-946C-CFE758D1FDC0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonApiDotNetCore.MongoDb", "src\JsonApiDotNetCore.MongoDb\JsonApiDotNetCore.MongoDb.csproj", "{60414F69-78A8-46CB-84F6-914B33A5F54B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{444F32D6-E3D7-4CBE-82DA-98B2EB10C46E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonApiDotNetCore.MongoDb.UnitTests", "test\JsonApiDotNetCore.MongoDb.UnitTests\JsonApiDotNetCore.MongoDb.UnitTests.csproj", "{4ACC5E5A-9B74-484D-A685-7D77D9C81D39}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {60414F69-78A8-46CB-84F6-914B33A5F54B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {60414F69-78A8-46CB-84F6-914B33A5F54B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {60414F69-78A8-46CB-84F6-914B33A5F54B}.Debug|x64.ActiveCfg = Debug|Any CPU + {60414F69-78A8-46CB-84F6-914B33A5F54B}.Debug|x64.Build.0 = Debug|Any CPU + {60414F69-78A8-46CB-84F6-914B33A5F54B}.Debug|x86.ActiveCfg = Debug|Any CPU + {60414F69-78A8-46CB-84F6-914B33A5F54B}.Debug|x86.Build.0 = Debug|Any CPU + {60414F69-78A8-46CB-84F6-914B33A5F54B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {60414F69-78A8-46CB-84F6-914B33A5F54B}.Release|Any CPU.Build.0 = Release|Any CPU + {60414F69-78A8-46CB-84F6-914B33A5F54B}.Release|x64.ActiveCfg = Release|Any CPU + {60414F69-78A8-46CB-84F6-914B33A5F54B}.Release|x64.Build.0 = Release|Any CPU + {60414F69-78A8-46CB-84F6-914B33A5F54B}.Release|x86.ActiveCfg = Release|Any CPU + {60414F69-78A8-46CB-84F6-914B33A5F54B}.Release|x86.Build.0 = Release|Any CPU + {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Debug|x64.ActiveCfg = Debug|Any CPU + {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Debug|x64.Build.0 = Debug|Any CPU + {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Debug|x86.ActiveCfg = Debug|Any CPU + {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Debug|x86.Build.0 = Debug|Any CPU + {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|Any CPU.Build.0 = Release|Any CPU + {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|x64.ActiveCfg = Release|Any CPU + {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|x64.Build.0 = Release|Any CPU + {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|x86.ActiveCfg = Release|Any CPU + {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {60414F69-78A8-46CB-84F6-914B33A5F54B} = {C9B4CDB0-2411-44A7-946C-CFE758D1FDC0} + {4ACC5E5A-9B74-484D-A685-7D77D9C81D39} = {444F32D6-E3D7-4CBE-82DA-98B2EB10C46E} + EndGlobalSection +EndGlobal diff --git a/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs b/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs index c926da0..1aa2c59 100644 --- a/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs +++ b/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs @@ -1,145 +1,120 @@ -namespace JsonApiDotNetCore.MongoDb.Data +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Repositories; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.MongoDb.Extensions; +using JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding; +using MongoDB.Driver; +using MongoDB.Driver.Linq; +using JsonApiDotNetCore.Queries.Expressions; +using JsonApiDotNetCore.Queries; +using JsonApiDotNetCore.Resources.Annotations; + +namespace JsonApiDotNetCore.MongoDb.Data { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; - using JsonApiDotNetCore.Data; - using JsonApiDotNetCore.Extensions; - using JsonApiDotNetCore.Internal.Query; - using JsonApiDotNetCore.Models; - using JsonApiDotNetCore.MongoDb.Extensions; - using JsonApiDotNetCore.Services; - using MongoDB.Bson; - using MongoDB.Driver; - - public class MongoEntityRepository - : IEntityRepository - where TEntity : class, IIdentifiable + public class MongoEntityRepository + : IResourceRepository + where TResource : class, IIdentifiable { - private readonly IMongoDatabase db; - + private readonly MongoDatabaseBase db; private readonly string collectionName; - - private readonly IJsonApiContext jsonApiContext; - - public MongoEntityRepository(IMongoDatabase db, string collectionName, IJsonApiContext jsonApiContext) + private readonly ITargetedFields targetedFields; + private readonly IResourceGraph resourceGraph; + private readonly IResourceFactory resourceFactory; + private readonly IEnumerable constraintProviders; + + public MongoEntityRepository( + MongoDatabaseBase db, + string collectionName, + ITargetedFields targetedFields, + IResourceGraph resourceGraph, + IResourceFactory resourceFactory, + IEnumerable constraintProviders) { this.db = db; this.collectionName = collectionName; - this.jsonApiContext = jsonApiContext; - } - - private IMongoCollection Collection => this.db.GetCollection(this.collectionName); - - private IQueryable Entities => this.Collection.AsQueryable(); - - public async Task CountAsync(IQueryable entities) - { - return (int)await this.Collection.CountAsync(Builders.Filter.Empty); + this.targetedFields = targetedFields; + this.resourceGraph = resourceGraph; + this.resourceFactory = resourceFactory; + this.constraintProviders = constraintProviders; } - public async Task CreateAsync(TEntity entity) - { - await this.Collection.InsertOneAsync(entity); - - return entity; - } - - public async Task DeleteAsync(TId id) - { - var result = await this.Collection.DeleteOneAsync(Builders.Filter.Eq(e => e.Id, id)); - - return result.IsAcknowledged && result.DeletedCount > 0; - } - - public IQueryable Filter(IQueryable entities, FilterQuery filterQuery) - { - return entities.Filter(this.jsonApiContext, filterQuery); - } + private IMongoCollection Collection => db.GetCollection(collectionName); + private IMongoQueryable Entities => this.Collection.AsQueryable(); - public Task FirstOrDefaultAsync(IQueryable entities) + public virtual Task CountAsync(FilterExpression topFilter) { - return entities.FirstOrDefaultAsync(); - } - - public IQueryable Get() - { - List fields = this.jsonApiContext.QuerySet?.Fields; - if (fields?.Any() ?? false) + var resourceContext = resourceGraph.GetResourceContext(); + var layer = new QueryLayer(resourceContext) { - return this.Entities.Select(fields); - } + Filter = topFilter + }; - return this.Entities; + var query = (IMongoQueryable)ApplyQueryLayer(layer); + return query.CountAsync(); } - public Task GetAndIncludeAsync(TId id, string relationshipName) + public virtual Task CreateAsync(TResource resource) { - // this is a document DB, no relations! - return this.GetAsync(id); + return Collection.InsertOneAsync(resource); } - public Task GetAsync(TId id) + public virtual async Task DeleteAsync(TId id) { - return this.Collection.Find(Builders.Filter.Eq(e => e.Id, id)).SingleOrDefaultAsync(); + var result = await this.Collection.DeleteOneAsync(Builders.Filter.Eq(e => e.Id, id)); + return result.IsAcknowledged && result.DeletedCount > 0; } - public IQueryable Include(IQueryable entities, string relationshipName) + public virtual void FlushFromCache(TResource resource) { - // this is a document DB, no relations! - return entities; + throw new NotImplementedException(); } - public async Task> PageAsync(IQueryable entities, int pageSize, int pageNumber) + public virtual async Task> GetAsync(QueryLayer layer) { - return await entities.PageForward(pageSize, pageNumber).ToListAsync(); + IQueryable query = ApplyQueryLayer(layer); + return await query.ToListAsync(); } - public Task SingleOrDefaultAsync(IQueryable queryable) + public virtual async Task UpdateAsync(TResource requestResource, TResource databaseResource) { - return queryable.SingleOrDefaultAsync(); - } + foreach (var attr in targetedFields.Attributes) + attr.SetValue(databaseResource, attr.GetValue(requestResource)); - public IQueryable Sort(IQueryable entities, List sortQueries) - { - return entities.Sort(sortQueries); + await Collection.ReplaceOneAsync(Builders.Filter.Eq(e => e.Id, requestResource.Id), databaseResource); } - public Task> ToListAsync(IQueryable entities) + public virtual Task UpdateRelationshipAsync(object parent, RelationshipAttribute relationship, IReadOnlyCollection relationshipIds) { - return entities.ToListAsync(); + throw new NotImplementedException(); } - public async Task UpdateAsync(TId id, TEntity entity) + protected virtual IMongoQueryable ApplyQueryLayer(QueryLayer layer) { - var existingEntity = await this.GetAsync(id); + if (layer == null) throw new ArgumentNullException(nameof(layer)); - if (existingEntity == null) - { - return null; - } + IMongoQueryable source = Entities; - foreach (var attr in this.jsonApiContext.AttributesToUpdate) - { - attr.Key.SetValue(existingEntity, attr.Value); - } + var queryableHandlers = constraintProviders + .SelectMany(p => p.GetConstraints()) + .Where(expressionInScope => expressionInScope.Scope == null) + .Select(expressionInScope => expressionInScope.Expression) + .OfType() + .ToArray(); - foreach (var relationship in this.jsonApiContext.RelationshipsToUpdate) + foreach (var queryableHandler in queryableHandlers) { - relationship.Key.SetValue(existingEntity, relationship.Value); + source = (IMongoQueryable)queryableHandler.Apply(source); } - await this.Collection.ReplaceOneAsync(Builders.Filter.Eq(e => e.Id, id), existingEntity); + var nameFactory = new JsonApiDotNetCore.Queries.Internal.QueryableBuilding.LambdaParameterNameFactory(); + var builder = new QueryableBuilder(source.Expression, source.ElementType, typeof(Queryable), nameFactory, resourceFactory, resourceGraph); - return existingEntity; + var expression = builder.ApplyQuery(layer); + return (IMongoQueryable)source.Provider.CreateQuery(expression); } - - public Task UpdateRelationshipsAsync(object parent, RelationshipAttribute relationship, IEnumerable relationshipIds) - { - throw new NotImplementedException(); - } - - internal IEnumerable GetAllDocuments() => this.Collection.Find(new BsonDocument()).ToEnumerable(); } } diff --git a/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj b/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj index dac47a6..60f5d3f 100644 --- a/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj +++ b/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj @@ -1,12 +1,12 @@ - netcoreapp2.0 + netcoreapp3.1 - - + + diff --git a/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs b/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs new file mode 100644 index 0000000..5ac10db --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Queries; +using JsonApiDotNetCore.Queries.Expressions; +using JsonApiDotNetCore.Queries.Internal.QueryableBuilding; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; + +namespace JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding +{ + /// + /// Drives conversion from into system trees. + /// + public sealed class QueryableBuilder + { + private readonly Expression _source; + private readonly Type _elementType; + private readonly Type _extensionType; + private readonly LambdaParameterNameFactory _nameFactory; + private readonly IResourceFactory _resourceFactory; + private readonly IResourceContextProvider _resourceContextProvider; + private readonly LambdaScopeFactory _lambdaScopeFactory; + + public QueryableBuilder(Expression source, Type elementType, Type extensionType, LambdaParameterNameFactory nameFactory, + IResourceFactory resourceFactory, IResourceContextProvider resourceContextProvider, + LambdaScopeFactory lambdaScopeFactory = null) + { + _source = source ?? throw new ArgumentNullException(nameof(source)); + _elementType = elementType ?? throw new ArgumentNullException(nameof(elementType)); + _extensionType = extensionType ?? throw new ArgumentNullException(nameof(extensionType)); + _nameFactory = nameFactory ?? throw new ArgumentNullException(nameof(nameFactory)); + _resourceFactory = resourceFactory ?? throw new ArgumentNullException(nameof(resourceFactory)); + _resourceContextProvider = resourceContextProvider ?? throw new ArgumentNullException(nameof(resourceContextProvider)); + _lambdaScopeFactory = lambdaScopeFactory ?? new LambdaScopeFactory(_nameFactory); + } + + public Expression ApplyQuery(QueryLayer layer) + { + if (layer == null) throw new ArgumentNullException(nameof(layer)); + + Expression expression = _source; + + if (layer.Include != null) + { + expression = ApplyInclude(expression, layer.Include, layer.ResourceContext); + } + + if (layer.Filter != null) + { + expression = ApplyFilter(expression, layer.Filter); + } + + if (layer.Sort != null) + { + expression = ApplySort(expression, layer.Sort); + } + + if (layer.Pagination != null) + { + expression = ApplyPagination(expression, layer.Pagination); + } + + if (layer.Projection != null && layer.Projection.Any()) + { + expression = ApplyProjection(expression, layer.Projection, layer.ResourceContext); + } + + return expression; + } + + private Expression ApplyInclude(Expression source, IncludeExpression include, ResourceContext resourceContext) + { + throw new NotImplementedException(); + } + + private Expression ApplyFilter(Expression source, FilterExpression filter) + { + using var lambdaScope = _lambdaScopeFactory.CreateScope(_elementType); + + var builder = new WhereClauseBuilder(source, lambdaScope, _extensionType); + return builder.ApplyWhere(filter); + } + + private Expression ApplySort(Expression source, SortExpression sort) + { + using var lambdaScope = _lambdaScopeFactory.CreateScope(_elementType); + + var builder = new OrderClauseBuilder(source, lambdaScope, _extensionType); + return builder.ApplyOrderBy(sort); + } + + private Expression ApplyPagination(Expression source, PaginationExpression pagination) + { + using var lambdaScope = _lambdaScopeFactory.CreateScope(_elementType); + + var builder = new SkipTakeClauseBuilder(source, lambdaScope, _extensionType); + return builder.ApplySkipTake(pagination); + } + + private Expression ApplyProjection(Expression source, IDictionary projection, ResourceContext resourceContext) + { + throw new NotImplementedException(); + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/Book.cs b/test/JsonApiDotNetCore.MongoDb.UnitTests/Book.cs new file mode 100644 index 0000000..7f32e0b --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/Book.cs @@ -0,0 +1,28 @@ + +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.UnitTests.Models +{ + public sealed class Book : Identifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public override string Id { get; set; } + + [Attr] + public string Name { get; set; } + + [Attr] + public decimal Price { get; set; } + + [Attr] + public string Category { get; set; } + + [Attr] + public string Author { get; set; } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj b/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj new file mode 100644 index 0000000..bdb1862 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj @@ -0,0 +1,21 @@ + + + + netcoreapp3.1 + + false + + + + + + + + + + + + + + + diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/.NETCoreApp,Version=v3.0.AssemblyAttributes.cs b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/.NETCoreApp,Version=v3.0.AssemblyAttributes.cs new file mode 100644 index 0000000..e7801f1 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/.NETCoreApp,Version=v3.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v3.0", FrameworkDisplayName = "")] diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs new file mode 100644 index 0000000..c4881ce --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("JsonApiDotNetCore.MongoDb.UnitTests")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("JsonApiDotNetCore.MongoDb.UnitTests")] +[assembly: System.Reflection.AssemblyTitleAttribute("JsonApiDotNetCore.MongoDb.UnitTests")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache new file mode 100644 index 0000000..164c2af --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +b69971194844ff90216f6a419b717bfb1860f7a8 diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.assets.cache b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..de0fe0f5df2044a8ee7b798c79c610a4ca7fc669 GIT binary patch literal 118268 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 +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v3.1", FrameworkDisplayName = "")] diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs new file mode 100644 index 0000000..c4881ce --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("JsonApiDotNetCore.MongoDb.UnitTests")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("JsonApiDotNetCore.MongoDb.UnitTests")] +[assembly: System.Reflection.AssemblyTitleAttribute("JsonApiDotNetCore.MongoDb.UnitTests")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache new file mode 100644 index 0000000..164c2af --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +b69971194844ff90216f6a419b717bfb1860f7a8 diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.assets.cache b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..32f8d23ad1868dca4db62663ec6b319085c7ffbb GIT binary patch literal 102825 zcmc(I34k0&b+*|>GQMvc%a-rk-d?Rv-&k77mOzqat$YF@voo{1W6j0PtfUq9ecxv| zLIQyhu7p4WBqUtn2!s$q5+EUjkc1EdAr}yG{@>SA)&07_n14j9)HX+$9&@P-}?CHp8WF4w=etP^KW_PYd-O)8#<4A^L^Jp?lVvL%o`uq ze)iKpdgjB9c^LR!_^|1_yVXv2y3uJK>`VvE<;7}mx?L(CEGW_n|=5zQG0 zW`a%Avwfyed(k?5#@0{3!PZa2!PZG<>!j~-wq9v=%k>)EG(8i*9cJ6>LE7Hz&W0>f z?~@>zEuV~oEuVseEtAfcN#E~md1<*(YSs`3ebv_oTY?+X&99r@8Sx3lPlb3ke;N)p ze>x5}Pdb|?ecsvpgWXoM)UNeIP8ok)ux@I;+ABq7AidOX(=d+)|JHVGd#ks%+B5xd z2AU(BGjR~kSvUxXbiyHh*$F4UWai8DpwwMymTS#kwX;wv%uEjx=7vLaD(utCEU)NfCL)8ZwmptLeU~OHXxE3x1 z0wQF`M}!yQAVSiKko1=g)nU(fd!16bS8FwOpIsR5Rv|;0_hNvP;4i^%f+t;rf3Y|C zBfV;~OPE2qR9>nz7lV>$H)(5eZ3|P!5@wZzEaaCO$S+gKN!Q4qJ_PbcwbAOV42F46 zSXbKlas%xZ3N7gx?NdE3wrXsoa;v#eTU_px7#sz$%Bm9Tl?K$S6jahR)YlJU*hGUv z1V%zmR(M=(XmO3wf^@CLK!KfTeZJPLVC2#tNF_Tw-n8t2osh6ClpyVYt%3YHg`9Ma z+d$3OeZ;`T&+~wJmqaygSXE{YuiZn+$lH6+F^4yd%XO-|o~JwO;KIhLnZ6jD1l( z337`8@_Gf5bPe*EzV7c;yS;Y3)LUqE8bNEG9Yh1;vbr&v)0YmfhwY)m zTo%9C0{!^|S)6(-wYqq0O$_$E!lThxZq~}-ki{A&w*aLa^53dZldj|B84opTOsI4j zDLb0zx)aY)Cfr9^;6BN-uSkT);5PO$>unaC&l$g2vx9iH)o8RZB^1x@n5Nxofm|Mw zX|?rTc(z&av^?<~t~EET55yf|BPM{NC;9k7+93Mbd&4^RyTL55@T%F4gO8y*aPUcv zbY3;2A8=!9H5Xfz`CuMXEz_7om*C5;zQwYJ(3VjfIaxBjn3JLFh63$}` zIJ*@b(lwl_mrd|+5h5#hR@$5_#9W!_obaBkoU>c9OGJAVqP;lNOLyX+fk-DJ(zoRx zdLkxDXExgBYWK9BD4W{{arDPsIN02N9BhtsHb?r4ayp$ZFU5fWi6*iU8&(6zX`Aeh z<^V)RGupup@rV?6J#zp?;0JIJ_}w@NoOA*wJ#Ttp%)muQX`;Oc=uET^IKA4e9`0e{ zhKmNAnw_4Zg*TWX#_NA?%*jbv>Fs;bERA*_4jS!#9E3qSjYj%CP8i*#Qm0*RHQJqO zw~G~l_3RTZvt4uK!wn2oiV%8!(a&*C?+kgl<~XHmO-RRtDwjm`3Mr^CgI3=3Id!Bnc6L|6h6iEv&aBwZuy7PMAS z!%(wVny+)3d<*7dY=P9*OWJLht|jr66}}42jH@aRT99<&BfYQ%o9L~p&1$DsE@Z*I zt>zv5Y7*fB5J(Fy;x`eJt}S@Ds0F+2YPnXbW1Xl{2;y8^Phwm$FxC`C(lti+{V=)FaY^2BL!s5$PJyQ~azZ5n+|J+3JPQIJ{`Lq(^pKq*46` z`>{}&KDw=ORcX7rLfXKY5!l2*|B_Cmq(9evE43Ogs2+kH=S$scC0zFcT&%>Vmbu+QIZ~;tWZUGZxvWxhACMd2b{1T~##lHgiIJ-w8GTLE z37Yu0j4U2?o@-!xp29}D#6duww9_>>>MkGY*yEk z7+-8)e2KzHy2j|XPEBaBD%kOzc0Sf)Z z3U-O;}9aeFtAJy2`kj%pI&D-DFNQV2=c2)!a42nnh0 zJ0Ft~$z1;-P4oh1OTNqiKlUV3Iz2z0vy5sn$u?t=D{dO12(UkA!nA+}-1cWJg>WvB& z=^B-L->9+)Hi-sHy0rxC`i{Ry!rs5$bTA1V6n%_&l`x| zq7ad;5qV7)5mC2QK8QWEUZ$Dr^GfUdf`R216&BJ9VUY{T8Q~k5CSwirtp=92DJ-OG zEM60O7zV3pv@Ekk_lx}ztF+258A#r)kdUsCc#S+_BtaGX0kYsk^8*6T4)9A%?=Ud^ zvcg2V#^m?3V}J^3^>Av+ITDFRye7h3yTb{pu(E{vP6O_*D7d6+xL&h-5^XeppJhlZ z%&3;c_bvn9yA?jtH9oI_ufW&9j^;|KSHc|R=8Vbg{_RZ|agVAavAsuOdoRwbal8-5 zBXE#TY@`>pU4GAHvz@&I`&G0rA8dXNzlo1@Z9A{I9$`C9pWsnX?JCXkukE_!+{uop zrnKYx4V=HOaFSjSXa9+-8(^^_eD=bQdTfBse3TWo)HV03ntS>+CC(2RI6tUxlCE)j zP4eVC;KbHTKiK?+f#Ek52GTW#=XuRJDiGm-86&z5USBy>!z4wp-0YSX`1G|2%gu0o za*KUzG6jw!Xx5+8_3sYrOT&Fgf&MVgyih)ZgMmmoL6hF_8TV++MIunaw1?hrp=EiA z{5F0Q8R^=bes>Vn%o1Lb!C*S;!iesz`k8fSpI=(*qXwqmQJ6^Am<|=OR`}jTtF0ZJ z#HRM*@pTF{j@Hn^_a<8H$gg6s|GNgnk12?xYlv?y6om#xJqJ*0a{HU}mY0iL>9Z>q zC9VB&LzPb`RY=#Wc#S)CY}Q*P?m*_8y=A5^b#3ns*(IV+Dny^cnODp2;b2UXPDG@8 zJtb&F&E*DHv@(M-Wx>6wf<*Ocv?{NZ&)_#vk*@9JwJf7iAsoYXtp1QBT;it9Qe6%w zOpVAyNQ$cFn)hcF($C>c`~5x+A|;(jNzd8Us2*tSP!qRk%WFtt&UwG;6_SAMck9ms z77hFb9EAM`I0&0`!Y17hcDIV7 zArE8eM1WXl2y#H%1LVsF>_1kpN!PGn=wTd zVrGRHY5A`hD*TC3fpo2c*Q6DfEbuO^XJ~M7BCtimpBi}nOyMD2SMuk#r65u|DIf-V$Dd z_3D!jXin+SZyGrMO5q?~qB>G(l`#VJ z*hNN2_ib0)63=%HJpZ8ZkgoA~c`n4$s24-jsM|1o&%pGL3KQuXlh^ehVrrLqOJQ)k z_T_~3*#}N(o9`NzM2_lIDf1e({ zuwKV(x!Tm&>X3X~ly4#Y6{SDmual!+Sjp>DNjfb_3Q7xBYAD*|onIvHnTCY<=G3^rf%P56S5F$m}2itZQEgEU$Wv`vYKgW*(RY@ zu~K_B>VsAr)en)^gxu&(?YZA3q+u1^oVN*S&QI;V(8^+4NBwKmvk+2nStHtHU< z@pi4Pbwk^qZ3JVtGqth1?9-%`q^RjJv| zp&IL$&O5p^HM^GurXDE3+*cUr_M*P6`EZ}eGD2Bv;~vM7pT~R z+#TsGJLI?~mTTb%s2GN(YDZ>_0bex_(UYTMh<OAA}5R$84B-jo@sw2i|^ zJ4<6r=tL7-W-SSl8<5C&ft^wBtcjtFD-NHBwe`MSc=B0EL#)f!lqu-@$&S!W5asBb9@ONiR7MJ>-` zzI&N(BCZ=MT2lhCOh0OY19(EHd{W|dH^%;Hs+)*kJtOsGMcuZ%uz)32l1^77@q!b{ zYtv+OlKRCga-47Bh~A9K5)r?dM2-tABE*Y9WH~Ehk*~n8@kZ+Aeh}xLX;%h9$ zoQkw;g(tfWQn(+Th1xk1Qn;DEza5+`HZ)|x`Us29)@YI&qgiyODoX57W`S-sQ4mBM zgvoNDt*&@WmpsQQo?YQXmJXuyT||d@vLsL&Tq#K-O>F06frgPN2$JD)f`Y-Fm#lM+ z_zlF-hDny4qRQkQOamt^DOq2(EKwWuC`6NuA=gz(He?*aT1v1T+l>&K+;QJaECy1B z?mFV_Mx<(I#?*j&%~+&^*C-0)CNJ_`qEMK8yK9R}y~9=hmu$LYk!;Zu2pM$P2?o6% zDx-eVcKS*e^^?1SC?#gf*os3YeVOm?FRYSug;r9nwPx%`A?vvYYy7Cg(#YUSklLET zB7KplW&>ku1X*Sb*#=9Xs)}6*tfk{k3-0d*V2O@gU82|IS*CkpU6zQbfRD`Ny3#a9HwqKIjHXyc1e1{j%{A1bg^@a8?#%Hq|#GPq2@X! zVd%aou_DF-9UzGU+`rX&9$9qvm1IeVU_wlKHH%_SRiL9K3KDhbM#Lao;bD=E6{E=L zzIC(-u5dMm63#PQ4EkLA@FEqwvn*O! zV1aHWEQlwrS)}i(sz}FqAA+`5SjcH_*3dm(L=5nko(m@f=e5^5*8<7KM|gMclBFnD zFPAJa7mYj_8EJh{7SG1%{fpru-SKP-|N9ploR~ii2Nw?h6$dBgN$12o>Hmh~-*Nm1 z$B%LR1jm2i_$iM6#PMG^{u@Uz*i8MB1-p|6`+v}!g#EwxP1vNnVE-S=37gI!?1$l8 z2=@G9Hf)sTSbGA^N!XM4P1vNnU_Tt?guM!9!d{K@k~5TyAi;9Oe8qvBs}XtNk42*r z{3Gz2;7NCZKMv&te>~0ve*(^hY>r)KnW2KR9Gjnr<|OQs@SCtncfmdx<%E3-&V+p` z&V^uCO4+bcmIM1VG$&!7j^Bh$x(oIhC?{+rkq=>?g>y03RR`>99_+KxoP>Q2eiJt7 zF4&JmIbolRGp)S_=R&ZN#4s~RP?lru^U$1xeLj8@Ht8xftwTwzcuTVh-#*Ximc3i{FGzx(oK5 zC@1WFI1~0=I2VHbpySqqvK-j^(VT=mhu?%vx(oIJloR&dI1~0gI2VFlKa_24l;yy_ z7tKl7_u)5TlkS3jKgtRF0h|f@u{am%y|GcIv678E+((lK{&8qjf`2@I6FliI@IQlc zf`0q@pNw+CehSWn{ZyO_!R|Q18)Z4L zpN8fn?5E>5VUzBH{S1^7_A_xN>}TOz47Ouf)yW-JJsZtQ*w4Xl!Y17X`?)A5?C0T3 z*w4qg5bW;3?9K#bIo5swnv<|!h~I=wx(oJ;P)^t{#+k5Rf^#w0j!Uwedr7_&%}LlV z!*9YS-39yQC@1V!;7r)B#JL!3$0I{G_mSaMXima@HGUH|=`Pr>K{;W+7H7hK9nSS4 z6Pwt&ihTXdWS%jXtoF9%h0E*FuvFmZ@S6&d?o!|lD5nB%#F+}b3Fl&VcZ>_Wx#Pk& zqd5ut=kc4cNq5113(5)m7jP!*U&Of(?4BcBP?mFXz7@?$*l)vc!Y17X`_CtAS?8(o9yBl2crSia4boj|ybtA6<5zK}8o!2fQ8jq6=Bc4Jgy*U8el#!D_;viI z8l=0__yEeO#s_hx8oz;ap&&Zsm_kHZP7wVjnv<|Ugx`csx(oJ)QBK$&!I`js3+F=P zbL@^UJ37j6SA8D%-$tVn{73Pd;7NCZ{~eSQ{O{sS@E^muP(KfJNQ2>+ELVH~^Az|v z8kP!t0>7yM=`IC6iE=9NDV(Xm@8LXv0*-NSUxD1g@2AnQRNyoCO$A7IDezg8Q-ROn zOa*=)=bW^zjp+NpJ?xWiG8K~tgF&D03elIi-W7up9fef zNjjAz-L@+I1*POEO371keuMk<_0cJr{V58ukt@m~lvsr~_5A}+eZOeYcbrber)c9n z{lhx-4?UIql2YuP7xi#hFgM z4Ciq=HKF7Po%$!9`u?d!-*Gw>3xcC_>YsTk`BkOldYtLh4LFa}sR<=V=+v)y>iczz zzTC}XhBXsJwJoWu+i@xJ@>cQ3so%(H0CI3b#`L{UJsegy_IGvhMa)eI( zj;FqVZ_#(0PQ`-C=&sc7dMf!3O35QQ)2S;skJG6MB}eGg?|JI`j~0DjImSo0c5iCi z{t^21`<{CKKk3>-AqfmHaoQ z52>ajbnkzAD*ZnerN{5yQ9iu>ucxN}r!_T#Vy#)VPx6~OKHO8s zRTdow8xa@PF*|ngLUaRPx3VtYn0l`E)bm)2o?{E!#3aA5k}-JLKEhMgnb z>ri!&usz;W#}h0%jxB5xI*ul6PxRFDB#WM73){pp#>m3PcvV`xwJU8uyv?9NZ4NDspF*<9mf{72^~ih zwwHP8dAUW;v4w47IdNoRdxfW}S1MKI;_2AJ)}iVkVSAOQj#pcB99!5XbR13CUgN3f zwH7_c7Pg56(~*Vkb)KqDDOKh2@YurEq3R%E8+htCZP9UTVVlr#G-12WQ_mTTp06L* zWTv?uJhI4L@2TwurL9~5f5rbFZ3hY7jhwVy7$O} z_j*rNZ&0erRsOMcyAD+ciQF4Kb-c-<7?Mdn7ukz+@&=`EpY`dqv zJCwe1r^c(sHD1WmcaQ+S-BZy!EQ-GFp;L4;QM}Vr*kQnD9+Y*kSN~mspuYyqGOI?spx2;c(13jcUqLa3tLz2cc!wKuQr29wXxFW=aKOR zQGCiJ*lg~x;kFy&JBR%6BliLEe-Foj#*bNrgKx?ni-TpPbK?x@d{cHGm}LIuyYTxi zC%ST}+pAac*~Cs2-=xInS4?Ew{Ug4%C{Z!HG*O*^gQ!l#K~$s@73nrq`%!6+6IG?z zE!S)Ojwn7qY5NTF%yjf=M~Ubpv`9oJ;~=6_a1ascL`1p`(Htu6cOpurYRJyd5T^wY z?mHFD5|&QCeLDUoEYb-}r{6Z+cL0^#ISU>{#{N>fR%!K`)t++Vx?ml0arR2l*P}@< zwc9jg>Z5qldS?I%VV;SD);kLaVUkXmq}!}_H!3YVtru@Rn=jXcQg@|^50Bt;TnnW# z7RP6BMMPlr=WFr#B(Vk9^07XN{A?g2@^f$y`91hSrvTqu({&=8-dM=<4>KYt`dY^(yI-!zogL*&s+#lG_!=tkwI4THI*T0^2gALxjFEe@i;00#|CI?C5=2G^Ti6FbdV3ENi{#Wi>#kP-PL4kEt@2a%IbKNgj|ce-1k2c>y@?G7Jr z!S=}R^niNEuR}_ATnx}ssY~#iN|EkT>T#&_V&B0gK1zhIq!E5lE|r(?#UO`HqOTFI zi6z*+N+~tE)X?ZMr4i{ajUEq;o<4*|jcTLSSxNfGSC{@bGo==n8(LhUv>@H3#m_*C zr+W5B(k=4KnFV!_Riz478Y*0+R3P1@!V{o^_jGoa4#NakLZPe+=W0W{Ym|1RyR`e+ zK`)#Hs`*+IA8#MVQT?x@N`GBzXmp*@h;)}mC1~`*0WO?M72i&*RGa0MTJynb*u51~ z$npVKsn3+5PoVT6-KEbw^m+Se^l?OCJW5I2g5rM8rd?JrP8+JOQ>v2gQnd_K-I=-K zA%VEk>a9g=UtcWdE&Z8WaYvmoV6RuONq51n0QO4;@Q}hij90W4S)SNnsI*b3M7m3* z>R_H|wJoE9yt|J2gs{9;HW{!tE7+vFU@rjnk>a9UH#&{+VdHfA634V(K z{(1$TbQkzVfPbcM7;*BmU}~#)_+m^S$-GwLaxk+y-Kg{+oqA*qjhCRu3m$qsbfT`T zOTkp*%=|QOU{DC|~{c_%{$_z8>T)WW5d;#ZH zr48w>csmGfp7Bs?W6VK1)OeJq8g;1gB+tGp5oUw?B!0Wif&Vs7{0-oL&iLJseUYe_ zyBw-)^;D$^Rmx*>h4z-bW0;Y@%@bz}I1jjS@^kc+`CuN?YMA4jnF-cgCmqCB>m{(; z0R(Lva|aI2G3>;_$8pkmNs?}xV`!t&eO|yS_$n-(9P*)U4;dx6U1(f_do+F%9O*7_ zPedj6BqZJu46W7&*Pl!FMmWo_8;T%&i~)1Ef=RjyW(P2DaS6D5p&Xoh~h z3kPBB$3YmR69(xv7(G;aQBDWc<>eRfKhbm?V$W(Y`5ctp=^TKl+x5(z_>!npXbym> z&;cA&=x!WTh;%AMx=o>FRLYwI8nZ$oj!iA@0csyD4nd0toYB#&9`5m5m z^vDKVKeadJa@$PM)<{Stah#6 zkiNb+b2~>qesUSF7l&z5**yRE01iTXEDl0@91fO|PH3dtpdCS_$Gf3n5w6+@uohCr z7q#(7jH}Foj_Y&k%e7nEfEcn$<2@b-h;Ta&B3!`_A|#y%Nw*<93O@HNc(;$R+^X06 zb1Il~Z8giwoemenGSF_&XlF$=z*f~H@)D3q=NmN2GVCLq@=r$J_~$L@w2i-8kCyNRxeC>(FN))wjORK z4(^@)WRx9CpEY!fx zgw!%D*55Pq*unbSSbroB8S(m}43`ZP5W%Ty_%F+!z zLyZ?IHAr`<@gi?EDz(yL6PaUbW!%Bzzgx?lGPjdhI(-pO+v5sB{P$c~S*meVsqrM7 z8BI^d!M>k#szJIfnqCYwa#n7YHw1JHc8~N9cWUqhS8c2H8iowG7i2jlx;kPFy1@a+ zxHpt>fHHO~8B(dI12phOA@&mG8`53Ac`5i7eLAelO0$IN|Ddys<@5%;ya4AOG09q1PJdU!~BK?n3`+@VR$= zDZKSslMkBKz=(#xyTK%F`g#M^YZNNdU8r6QzM4-$=5WupJU`vk4{4NeR;EZv-&>JLU^G*kiv5KiFfFPK8Lf z_1JGlxmV}bsV=DJqo9hVsH_-{uD1O#{|@j=tnUC8V%7KhpI2B(cNzaJ;PboJ8(@Q4 zJ$$;*cDG)AnaFqT4xcf?%2JJY8fyH4QiF7t8ovm>r}@OWsYSiExYRpb<$nvCe|KD0 z>hM-z!N15AZ&Nyu?$Y6xP~Ix2LjxNmc{SkCbhB;r9t{{p=ez7Z(@QeGxuDLQ)0uq!4zR7TRpCZs?qqLc z7dx-+P0lG~K63{6Z^}g+jTjKn# zf%7v8C+RMnp9P=S(`tybQ7?wHQMY0Jo`Lmq3M=U@tiKOF_lHcSO&fK6k5@xL=ej^> z*hXCsPpTbh+|Q$7{ELR(>wGPoE=g*f+tQ{wx+ zGUyL*<|Xw-g^zUNBi(jM{UP|g7DOX_0saypfUdv`D^S}4;fKHl2q8Y={*uB?x(oLo zf$tjdxMw%xedC8~%?<0(CoEzP8}G;TJ6$!H?M@@{`w^QK@utRm!}_?lh4pFqMb=%Fh0Ioj=2q~W=f3e7~j)V_`%#7a61uXm~aIp{ya?;qp% z2@diR>tEoku@>32hQSFfKOPzwK|+y7rFW01};;{y?URx`}VM`L^oXNK8d*ai%%`0mmo&q9cs>sw@ zZfj)RX9l*1zR@Hs@?&U%f00Fgf*-U9=`M?q&$P$~{4CO0!Va`8g@Yr*9I><_v7v1d z-*o>23gKU5h@avI4MDog5agpF{u5`0#(&}Xn4ck*=P|Fo%-!niMs}kyWe#VQ|AsR7 z7a8S$@PkGn-DMQ=(J23mGmY|pI0_mCYl|Z{ik3N?QJC-o`b0)~7=F_zq`QnlJ{n~L zXBuS^=fXxApjXYfaCD?>Rz3A_MtL}tkw#gC-!uy8E~Ai-Mp=zBjdCo`?mP}^Y%X`6 zwL2{=i*lx$*;%4H2e!j3TOP7E>Lob2@oZmTgnTA>3Vns+sf35)5r9UONT*7q+a@^3 zN0p9KDjkpWlbuhd{wksKPd{i6s?Z6Z3XzWrov0K#X@m+{XATBc=wwfY$VY`vQ3`SH zAm@!ji;Kctj$OTDlM6*rt-(ffMsj)a)x zrV#D6(*aVt?F^+H=`OdC&vcvLCJ|rd+j|BFrrF=^)qSb{De&GpmD8aO zxRFYCaUVB)w?-L&beHeQM+2OPv-aJ)#%utqdq=GQ`JVcdkNU4w`g73nS}*y#sl47CWBA zE&fu#lW}{QQjc_3+>+09WlsJYXWUxU8^nh>+FkCc9r;G;ysqb1AbLEo_dT=S#Nglx zz?9CrQmIF}%X#FZdh*d{DCecsvpR1$?XL3Fj(pTkKK|q+Mt6p$-YDodn#<8K+C3<) z!7l-%A;dU{;A z^MmlEbmz57P10TNBp=n3cgMF4G3+_AY26KFykd%!@MXN1l^XmEbo;muLT80gc`x~j z5y#gl#YuN5PCirdw~kS9Ydq)pxrp9Vo_dpyddne#-@bD92IgphAQVl%^y1jetRG;^ z&CG#PEN?S2`KZ`5&U);FpW*-3fp+rV7K=n~wPa`?OTn{S(4{bp0&-SE@!;6aa=jOaI!~6P9fFPyqkmh_}U(cJxT1 ze|A!^PFf#ITz8$47{#b5P_xrNLXylPzj|hK0FU09RJ3RcdZE815;vw?ClgXxDiH5A zvF0`onHqCzVfnH)8@pOG7ERs;wtVQ1N*an0;a!(4UFziSXDh#k9c^Goc~WrFML zeTBe!psy zr#0dlL@BOAX4TXAd;^hW;3mToyamQs618|cOXN4*=3iGgEuBDww>w2-CkYf9P>e8N z0y2N>MDm&K&Snx-@DgzYLu(AVF+54AdrJW!>14KB{A(v#HSa1(2W4A`di3-8U1({! z2g5MyFpak+_V>NvR{S`KFigU7?~E~I;0qJkbtv*gof&f*atf~Q@8`bMfWZNrWMjRP zHKCuI^m0d)ID6?C$x2B0(y3mPUz2QX^DJF`x6I;+p$*<0yUq|38b2%P=OnUjuI}gL zTw~Ph>l)@rIdjh(;|&RbM4C&C64Bb6QOhy>NrY@dl#wxW=SXD2Os5!`B3JiwO4^3y z1}BYtQX-Y(>VC?{%M5I^Qi6{)Pn+v+EsxVIUX=>R=;1GBV%5`CRgpUI>Qvom!bfni z^4fG|M3zpNXpW-AJ48}WT!A9bw}^~V86x123u}YTBz*%&xlyewq;aA_Po!}LioC#r zR3rf0ZosMvA!DULx}4p~ph1z3UBtd`io$$_6gCa~X;3 zaFyc;b>?QHl|&Fo9Rs62Te`^JQr!1$NlDK#Ok9V8FSQF!q=36IB|A#jz$6-BzQuk5 z#Y8oVKRFVQ{Id1x5;0E+%>bkI={R)on1Y}E0s$WMoHrOyNkjQn7Pro zl7w?ymD$J|3tF{p4zdxT=^J9+My_itA~}O&NddRj&mPjpqIcs-tze9^SshK?B?R=E*B1?n4*5U3N1VR(p5{WHc*EgUhc zBv_G+16?NrV;n|)7-N14)Z-R`F_}6nJ#MkNI9VqtxWCo78|<(4|JqY(Vxggv7A!29 zQHO%{h-H62xl?+?661>#n_i(VS5+y@B5KJkhVcMWligzYTDnDvbmS&G*JvuU(MlIcIMU;`c!OW36PE1H@w7~?b6LeH`=_a zY(_tq*?IMD1;+!KyJEg3vDwm^L7DNfO!cK5TPf_a!dC>`G)T3xU#!IrqU7%x(msKT&IGr{tyAKP6rYlh9 zsmgQxTv2!cxiaOPC=wzbR@A+6OgvEP9(47}1}BB+-bWOLNw(6%Pz#8Dr3@@c{oP65 zA=c|&T{K8eiG}HM5~-cC4U%GoN;)oC7NuQs#ASj{DiapONpRB2L?$sfDMY(9EaH}f zu=|~HI5*;Cbv+1-iTF#W<4F&&l1Rc-LxP_IPm4DOgj3X|g(=IZue2aG5a9DT;oDhZ zD!b#hcDvOc$5+Qi^y6k*?UmiFa;g6CUT3*_`gTk{*O&sN)tpqG+O0O0`h6wouJ(A+u<*Qbh|@vxREi)&jl`lVzpsqDd4@R8ton#>^J4 zV-sFx3z`>h@i>;0+71G+FB`UEMET6`oAD zELgAjh0M!(O?J^FiY691DU~`?+jdx0VnMb_uF}GClc~~@HI|n$19nYz(Iko{ zmQu02WHs7Sw$ZYSCQ&r8lnvT}FI^R$OrtfdZfRuNeoc1KB#I^)DYrD|ZANR(XDPEL zyJ!+c6U}+kXlP;Yoi?L|1zGK^b(XH~m#zv=rqP<#yH_*&?v-6MiK2;S>h9IHw$RRQ zA-iZ2MHB6G3s%SDTd7(1$Lyj>6iu{Kj_8|zu)Xly>Wfx7N zXrkLWJH{41;Gl)wrCw9-nv?SfswhjF3vh`{D4YK9zAj>YAMA5|Z!E+4L$$1y*JKw>qG;k!&AcxiU7DKR zYr8Ln1zGK^b(XH~m#zv==5+`nRsp)U>rfSCHF{xA`6G1svFZCAG~ zbZ=TU-AiwX+cb?Q<#<11Vrv~csCYYO;?aB4K(*3){EX(acXZ0d)dZ5;5=aIRV6zFH zya%w!K(%Z(NeCK1rQ3!TV6zFHPo0&F(HGw}d68K{=cCJ8}<*ko7%Hk%x54PujlYE7cn z#KD%$Gzocwm}Xc3Hq+p-bAWIesFuwp2|*skO54zBaLYQDcN=!WMHH0G)UEKJ4tB+XsGNoq?EfXZcIFj z8PAf|HwzPwa<>jw{n5n$8E+{jkZf@van;+K2O-;A>XpR=jGGcLiq*BbC-GQV+&#lp zx4Fk5(Pic>1J<*-Cn2hsiEkRBuFXA(C)DEZ8Lqm`Jr0RZ_Y7Fi=AMM8g6J4--WBuKttOaa)op+h6HJA@b?b1|ZP$}SqRUTP2CQeho)V&pnfRt5>e}3s znCmL;p5dz7+~bhwbkBhGZ0<>jD(Ide>e^<$)AMYFeKb1)8FyNG;yke~Z{0jhW!s!@ zT3#`~-8QU%Z0E_zzd@Zhl#FcWWsCK2-e8rpohRiD@_dUf1Ls$Rfk2 z(e25-ZonqOHo=&c%u#qP5wMBMau*xgn28OPVB=bVJq@GC$eXNTbd3;xS%&aC|2NcaTDptYT#TI#2n+mKE&k zl&Hwl#*I=ZkubwFs`vm>7N z$9bxl(2LwUo-9S_i!!p0$t{z5QL4Tu^Z0ZpZ1U}{EiUyASNUI^3EyHnM=gSg(nuLv z3*ltb308zOnZzsI??qjcsF6;orTaZ6lkU5t$Cap0)oF&A{-bkd{i5 zWG0SMQbkrMwz)|~qHfc#R{BO7+fZf8ic>x58>wz0E=gbeaX>0DGTD>9_O&2cX5N#< z6{*=1S8$jciU!chklbAQ`vA6}RY;TKlYQs4hLv5sI?n7ViPSfi(wXL?Uej5R8tYyz zm(iiLy{=tpA70&WB-0Q@Ns+=xP4(`P%8ook3BmSMMEZj;7T?C{dSEx5VJAU!gmBE) z|BFiK5H3=-57}n>Ns`x@?{tYMHzl$bTa0o-g$a(B>9x|Ah@tx7S&@rPJ@Jy3_Wrou$7+pled> z#ksXlQ(fq;N)=zOTBub!4`)L+M-{~ z>OSdA8(XpgRkzzLwc9Hj)~6997&dPt!%ihOs8r``rDkyb)DaYDV!wiZg0Odms!xAR zgilJER!yoqh+V?oQ0G8@fUnzH>y&k(Y+#p$x=^jOI;CL!hCvnB9W|N|HJAn$xP_gR zXd$B zBPL5msFM~qGM!9;u}-?=j>u2lBf$(lU9hgOKA63$SG8@r)A;gsEU1Vkp`4(yg1#=k zT&&VgN>HQAB|#me&$=^?ib0joomQyE?b^7VrD{FcQrNOem{t%;`Xf0-468A9Tjxaz zrX?L8lXTY?EYIU6yNoXb2I~gygJPqa(gxE(+`0{PTHdKVD$%1KN0 z-3^Xf;_f_Cz^bqWdy`a4=q!r26OXSls!xI*w_zP3=IIi*kx_j%(jjZ)s{&9Oi=WX@ z-{zpfwnZ|mjYLm64iWlMEcu;^c*S&k)I<)*~hol5wLi5Mz=V&EF7JbvK`` zxiP9~*FJjM=SLNG_Ilyh-$hrD@x|&5kytk%DfOPHjvdN?b8UHGXQuCt8n%KRu-%;N zV`e&j@~~c{k>%|VA8}rC#$Vi6hAiC`XFY}%YAr@?HCQ28G4c#q`qA5NhS}!gj>vuX zxXFP73AA9`4P@YO-Yu1o9IV}T9@eNs%h0wPUVk}Q{e(O^$80%Lbi#VtE*|(0;<4h&_p!K(?xNyWbx%)sClfLxM6&PuUgdSa ztLm?M@71fG5F|kmKSRR5nA#hF%r4*>iuNGQRMKTEyp3u~WCbzkrA1GG_u25FJRpd6XNGNv&0+U) zrFK6n3L@=y)4bbhOSdacY;LdDY=McY>>+`-djkyZwF~8dgWVkvp_4S3U|01uaZC}K zf-NT)v`u9__Ea$0a669JK?EYMbCFwh;tMD`27c0&doO1v^jys)q^BP7^sVCvvRJ zNPA#p)Rnaqm}^h7In!(z^$iYfupls366gjPXGOCFLfo6M>PDsU`9gk

f~Pi`4?iEK3#A5MfOPCHC21nfsqTHb0eK?h2@-2LZLHE zFI;hYK{`Hd^L<|1{2(osW62$0LO#|n!qRlWt{mB?)uSL)*{G*Ouj!Mq7nDXvdPx&^ zfr*zi0spmLB)Q;$2xz2Z{AHY9J}GVjKBim|0EQMsFKa`DL0*u!{!WBPADpw;NIJw& ztzBW*U@M(|T6bkUY(kQ|f}nOp&j8mNbu*G~NNz#W9m%aodLX$CNlzrbkR&7Njie8f z+mZA|(htcUKukE^Al0z6E}VQMOAghbv5ISjUPb~O6Gq6D2HJ0Qvq8Zupz9@=co9t4 z;PHbOV=x#9%92ulWOe9MvpM`%Sa?d;_%JgFP*SRPTigGY_(bm z5`{)?iB3nCZ{z+Z*Y;Ox5e=zU+joFci!e#G)_!@j2S@r2RB92w27L!9wFsiqzBoA|B=nVEDtlb+$sPEBJSS=lBukE^mW+?Gw{w2(8==m+aF z1S=DQm0|)IuF2!2%Y;NG7@~Qm9NXlMH!xfx6v}hFWfU}#9C*=!+jS}U--(rMb&%$G z6D<^qd?F_lqCs1+XE2llgHW8ZiY+|r16P-I6J%l{-aCkd1k!*OZX^wc4iQv}<@=Jw zLR!+JK>0mfS%{as5oO_^o29IwaWZ=Wo)gP`!{hB0nMoFiD@EU}nk2~=$>;#;%_)!d zvpmO0H>g5Zoa3A^<7(D*N^zFE;yk?Pm6Q+`V+{;;5C&@*^tv%|2J^3gRN%fk)Na4xG3IObX{rE)M~u}x z5+=-7Ua4yn?(Xp}&U$xu7>{xRA#s<+g-V)pfZiT4G4+1e@UBOVf`(KslF>lsLXN7A zd>zn6^%-m6?Q2j#_$AEppxq(`v+Hw1wVKBP6P`F^R3XOg4^VD8I>IoSrOs53hj9;a zyWQ!y-&5m(ka*I`2>%*N1Jwnm^Aw93USz2WI7U8_0w5B|_!rj*`MehB=d?gihU$k% z1?koaI>ax8Y`;^0Cx85%RQOwF;ZqSQ^d)5c3!yYT9xhNBu`cpd5sW}hLsASxuaO;E zjXb5*$lcJkE^ePE!Rr0u2C8f}IWqc}$y@j{v&W;|IE_h%yGr&-JJOXO~Z_)1W zMzqjZmH}s>lmMX}$^!+e3`scX@d6p)I` z5zWZMfI4a>)B}2-uo?Rr0HfXxWxL4?)9gmaK>>C~169 zodD4lLd}O(R5g+XK=d}bOpE<}TI}zIwzby>`zY%&+>3w{cO!5|n_eq~CHDZYsxrbg zP|`#ZbO^_a9a2l6167M;DG)u_ztMudPz(0`&~|N0z;4lo8cPrv`sKh^pb_X}^}1GC zSb^B#)+1|SC6qJ^wQ<)^6EUS8fKJqdNFD;B*My+e1h3V^8fd%zm()aD!pPcK3%m)c zHsb1etu*p5Vu)_JtdTk>IpbjkS4`9yq}D+f|wKyF5Ofw6X^% zT_-mJJE5zVU89H=xq6!rIE;A7ir5UL{*5rxAbw8$7FtukL-Knddi-fE{&TeW{{h<8 z#D{;>-MjXIf2;Wk;KLiQtQx#q#Z<*Wp62g@ZM8^DOD7Djk{-Iuh7t~%PuL98nJ5~$q7%i}GK-=l@m~3-C zM_J8p!tfI{T&iHiy?>@TGTm-RmLtoZmgXsS<1LYT3nj$Jy^O`%P*T=&%&%0`K4?Mh zM{)p&em#%Sf-_tT&L5#|l>$!d1ngq6D|-s>!0gImj@e8F(+NL~i7P}GYcc-`=1Iy1 z5{7Ib;0uef2K*;@FdKlt^VGr|Ct*aRB8kMmUb^eh?oby(j6=BO~tU@xYC_ zY`0|JzIAB@_Z(lBgb{NKWW%!~OBQ$f$U4-B;q!XmD1ceQTv9++1bFzv!B3LRCDPYJ zs$?oVkHg=jKnubGDG3XjWOBj7|L2#61mIlx6__RZbFN$(eq#k6P(Xtg%{55=m>T1g zr_vFXZ^4fjn5e_@Um|G~6vB|3w3G?=A38F>Xmi?YFLxi-jreTX<(FPKmraPqn=-b4 ze&p2R663L?Wpk%JRkwQQfNy^4bnNwKhHdX~dHb7N`gki=Wm@w;Ncg_XxJv&UeePbi zEi135|Ki-Ebx+d6iM^ND6FvU&>5(u0#W>y#_sUs1?eSaB_dPn`=66nY{(Ngr>d@Ov zr`|d~DC$E3{zH%$rglXhR8c3un=s@iMZNBe zA|JTaEeaCj^CmGO?1GF*6}1SS!jRj(sMCN;y{H(7mi7Snt4-t#cydMFsG?%H zGz_`zi;6K_y{H)Ajj2^PRJb5xQbol`W*BmlqCUQ0gM}sj^PO*HZ?Pt8^5s(p`t&<+ z^yhDTWgp)2z}s7MW^{F*fB)pC+rIyH%CH`t*v%*NZa-a39Q<&}-qh_w2OaBqD!=QY zx7;7)PCd*OAKvH~J#o|iDSbcSel^nYShuq|NnM4FCtlq!WCAmLL;A2C3oq?0-u2oy zn_cfdHz%<@)9Iy?{`=VkzPA@73=VFTbFjTl8V^T%M2vQhw+ZPqR zV7;gq^FmRzTM|4HB*t`HSc0UAiou#NKw|!Cf0GE1EG3*jks~BK#LB^ztieZH? z + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + /Users/mrnkr/.nuget/packages/ + /Users/mrnkr/.nuget/packages/ + PackageReference + 5.4.0 + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + + + + + + + \ No newline at end of file diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/JsonApiDotNetCore.MongoDb.UnitTests.csproj.nuget.g.targets b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/JsonApiDotNetCore.MongoDb.UnitTests.csproj.nuget.g.targets new file mode 100644 index 0000000..015a19d --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/JsonApiDotNetCore.MongoDb.UnitTests.csproj.nuget.g.targets @@ -0,0 +1,11 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + + + + + + + \ No newline at end of file diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/project.assets.json b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/project.assets.json new file mode 100644 index 0000000..265b64a --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/project.assets.json @@ -0,0 +1,9033 @@ +{ + "version": 3, + "targets": { + ".NETCoreApp,Version=v3.1": { + "Ben.Demystifier/0.1.6": { + "type": "package", + "dependencies": { + "System.Reflection.Metadata": "1.6.0", + "System.Threading.Tasks.Extensions": "4.5.3" + }, + "compile": { + "lib/netstandard2.0/Ben.Demystifier.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Ben.Demystifier.dll": {} + } + }, + "Castle.Core/4.4.0": { + "type": "package", + "dependencies": { + "NETStandard.Library": "1.6.1", + "System.Collections.Specialized": "4.3.0", + "System.ComponentModel": "4.3.0", + "System.ComponentModel.TypeConverter": "4.3.0", + "System.Diagnostics.TraceSource": "4.3.0", + "System.Dynamic.Runtime": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Xml.XmlDocument": "4.3.0" + }, + "compile": { + "lib/netstandard1.5/Castle.Core.dll": {} + }, + "runtime": { + "lib/netstandard1.5/Castle.Core.dll": {} + } + }, + "coverlet.collector/1.0.1": { + "type": "package", + "build": { + "build/netstandard1.0/coverlet.collector.targets": {} + } + }, + "DnsClient/1.3.1": { + "type": "package", + "compile": { + "lib/netstandard2.1/DnsClient.dll": {} + }, + "runtime": { + "lib/netstandard2.1/DnsClient.dll": {} + } + }, + "Humanizer/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core.af": "2.7.9", + "Humanizer.Core.ar": "2.7.9", + "Humanizer.Core.bg": "2.7.9", + "Humanizer.Core.bn-BD": "2.7.9", + "Humanizer.Core.cs": "2.7.9", + "Humanizer.Core.da": "2.7.9", + "Humanizer.Core.de": "2.7.9", + "Humanizer.Core.el": "2.7.9", + "Humanizer.Core.es": "2.7.9", + "Humanizer.Core.fa": "2.7.9", + "Humanizer.Core.fi-FI": "2.7.9", + "Humanizer.Core.fr": "2.7.9", + "Humanizer.Core.fr-BE": "2.7.9", + "Humanizer.Core.he": "2.7.9", + "Humanizer.Core.hr": "2.7.9", + "Humanizer.Core.hu": "2.7.9", + "Humanizer.Core.id": "2.7.9", + "Humanizer.Core.it": "2.7.9", + "Humanizer.Core.ja": "2.7.9", + "Humanizer.Core.lv": "2.7.9", + "Humanizer.Core.ms-MY": "2.7.9", + "Humanizer.Core.mt": "2.7.9", + "Humanizer.Core.nb": "2.7.9", + "Humanizer.Core.nb-NO": "2.7.9", + "Humanizer.Core.nl": "2.7.9", + "Humanizer.Core.pl": "2.7.9", + "Humanizer.Core.pt": "2.7.9", + "Humanizer.Core.ro": "2.7.9", + "Humanizer.Core.ru": "2.7.9", + "Humanizer.Core.sk": "2.7.9", + "Humanizer.Core.sl": "2.7.9", + "Humanizer.Core.sr": "2.7.9", + "Humanizer.Core.sr-Latn": "2.7.9", + "Humanizer.Core.sv": "2.7.9", + "Humanizer.Core.tr": "2.7.9", + "Humanizer.Core.uk": "2.7.9", + "Humanizer.Core.uz-Cyrl-UZ": "2.7.9", + "Humanizer.Core.uz-Latn-UZ": "2.7.9", + "Humanizer.Core.vi": "2.7.9", + "Humanizer.Core.zh-CN": "2.7.9", + "Humanizer.Core.zh-Hans": "2.7.9", + "Humanizer.Core.zh-Hant": "2.7.9" + } + }, + "Humanizer.Core/2.7.9": { + "type": "package", + "compile": { + "lib/netstandard2.0/Humanizer.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Humanizer.dll": {} + } + }, + "Humanizer.Core.af/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/af/Humanizer.resources.dll": { + "locale": "af" + } + } + }, + "Humanizer.Core.ar/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/ar/Humanizer.resources.dll": { + "locale": "ar" + } + } + }, + "Humanizer.Core.bg/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/bg/Humanizer.resources.dll": { + "locale": "bg" + } + } + }, + "Humanizer.Core.bn-BD/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/bn-BD/Humanizer.resources.dll": { + "locale": "bn-BD" + } + } + }, + "Humanizer.Core.cs/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/cs/Humanizer.resources.dll": { + "locale": "cs" + } + } + }, + "Humanizer.Core.da/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/da/Humanizer.resources.dll": { + "locale": "da" + } + } + }, + "Humanizer.Core.de/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/de/Humanizer.resources.dll": { + "locale": "de" + } + } + }, + "Humanizer.Core.el/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/el/Humanizer.resources.dll": { + "locale": "el" + } + } + }, + "Humanizer.Core.es/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/es/Humanizer.resources.dll": { + "locale": "es" + } + } + }, + "Humanizer.Core.fa/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/fa/Humanizer.resources.dll": { + "locale": "fa" + } + } + }, + "Humanizer.Core.fi-FI/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/fi-FI/Humanizer.resources.dll": { + "locale": "fi-FI" + } + } + }, + "Humanizer.Core.fr/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/fr/Humanizer.resources.dll": { + "locale": "fr" + } + } + }, + "Humanizer.Core.fr-BE/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/fr-BE/Humanizer.resources.dll": { + "locale": "fr-BE" + } + } + }, + "Humanizer.Core.he/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/he/Humanizer.resources.dll": { + "locale": "he" + } + } + }, + "Humanizer.Core.hr/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/hr/Humanizer.resources.dll": { + "locale": "hr" + } + } + }, + "Humanizer.Core.hu/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/hu/Humanizer.resources.dll": { + "locale": "hu" + } + } + }, + "Humanizer.Core.id/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/id/Humanizer.resources.dll": { + "locale": "id" + } + } + }, + "Humanizer.Core.it/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/it/Humanizer.resources.dll": { + "locale": "it" + } + } + }, + "Humanizer.Core.ja/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/ja/Humanizer.resources.dll": { + "locale": "ja" + } + } + }, + "Humanizer.Core.lv/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/lv/Humanizer.resources.dll": { + "locale": "lv" + } + } + }, + "Humanizer.Core.ms-MY/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/ms-MY/Humanizer.resources.dll": { + "locale": "ms-MY" + } + } + }, + "Humanizer.Core.mt/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/mt/Humanizer.resources.dll": { + "locale": "mt" + } + } + }, + "Humanizer.Core.nb/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/nb/Humanizer.resources.dll": { + "locale": "nb" + } + } + }, + "Humanizer.Core.nb-NO/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/nb-NO/Humanizer.resources.dll": { + "locale": "nb-NO" + } + } + }, + "Humanizer.Core.nl/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/nl/Humanizer.resources.dll": { + "locale": "nl" + } + } + }, + "Humanizer.Core.pl/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/pl/Humanizer.resources.dll": { + "locale": "pl" + } + } + }, + "Humanizer.Core.pt/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/pt/Humanizer.resources.dll": { + "locale": "pt" + } + } + }, + "Humanizer.Core.ro/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/ro/Humanizer.resources.dll": { + "locale": "ro" + } + } + }, + "Humanizer.Core.ru/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/ru/Humanizer.resources.dll": { + "locale": "ru" + } + } + }, + "Humanizer.Core.sk/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/sk/Humanizer.resources.dll": { + "locale": "sk" + } + } + }, + "Humanizer.Core.sl/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/sl/Humanizer.resources.dll": { + "locale": "sl" + } + } + }, + "Humanizer.Core.sr/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/sr/Humanizer.resources.dll": { + "locale": "sr" + } + } + }, + "Humanizer.Core.sr-Latn/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/sr-Latn/Humanizer.resources.dll": { + "locale": "sr-Latn" + } + } + }, + "Humanizer.Core.sv/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/sv/Humanizer.resources.dll": { + "locale": "sv" + } + } + }, + "Humanizer.Core.tr/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/tr/Humanizer.resources.dll": { + "locale": "tr" + } + } + }, + "Humanizer.Core.uk/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/uk/Humanizer.resources.dll": { + "locale": "uk" + } + } + }, + "Humanizer.Core.uz-Cyrl-UZ/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/uz-Cyrl-UZ/Humanizer.resources.dll": { + "locale": "uz-Cyrl-UZ" + } + } + }, + "Humanizer.Core.uz-Latn-UZ/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/uz-Latn-UZ/Humanizer.resources.dll": { + "locale": "uz-Latn-UZ" + } + } + }, + "Humanizer.Core.vi/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/vi/Humanizer.resources.dll": { + "locale": "vi" + } + } + }, + "Humanizer.Core.zh-CN/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/zh-CN/Humanizer.resources.dll": { + "locale": "zh-CN" + } + } + }, + "Humanizer.Core.zh-Hans/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/zh-Hans/Humanizer.resources.dll": { + "locale": "zh-Hans" + } + } + }, + "Humanizer.Core.zh-Hant/2.7.9": { + "type": "package", + "dependencies": { + "Humanizer.Core": "[2.7.9]" + }, + "resource": { + "lib/netstandard2.0/zh-Hant/Humanizer.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "JsonApiDotNetCore/4.0.0-beta1": { + "type": "package", + "dependencies": { + "Ben.Demystifier": "0.1.6", + "Humanizer": "2.7.9", + "Microsoft.EntityFrameworkCore": "3.1.8", + "Newtonsoft.Json": "12.0.3", + "System.ValueTuple": "4.5.0" + }, + "compile": { + "lib/netcoreapp3.1/JsonApiDotNetCore.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/JsonApiDotNetCore.dll": {} + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/1.1.1": { + "type": "package", + "compile": { + "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {} + }, + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {} + } + }, + "Microsoft.Bcl.HashCode/1.1.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.1/Microsoft.Bcl.HashCode.dll": {} + }, + "runtime": { + "lib/netcoreapp2.1/Microsoft.Bcl.HashCode.dll": {} + } + }, + "Microsoft.CodeCoverage/16.2.0": { + "type": "package", + "compile": { + "lib/netcoreapp1.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} + }, + "runtime": { + "lib/netcoreapp1.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} + }, + "build": { + "build/netstandard1.0/Microsoft.CodeCoverage.props": {}, + "build/netstandard1.0/Microsoft.CodeCoverage.targets": {} + } + }, + "Microsoft.EntityFrameworkCore/3.1.8": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.1", + "Microsoft.Bcl.HashCode": "1.1.0", + "Microsoft.EntityFrameworkCore.Abstractions": "3.1.8", + "Microsoft.EntityFrameworkCore.Analyzers": "3.1.8", + "Microsoft.Extensions.Caching.Memory": "3.1.8", + "Microsoft.Extensions.DependencyInjection": "3.1.8", + "Microsoft.Extensions.Logging": "3.1.8", + "System.Collections.Immutable": "1.7.1", + "System.ComponentModel.Annotations": "4.7.0", + "System.Diagnostics.DiagnosticSource": "4.7.1" + }, + "compile": { + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.dll": {} + } + }, + "Microsoft.EntityFrameworkCore.Abstractions/3.1.8": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {} + } + }, + "Microsoft.EntityFrameworkCore.Analyzers/3.1.8": { + "type": "package", + "compile": { + "lib/netstandard2.0/_._": {} + }, + "runtime": { + "lib/netstandard2.0/_._": {} + } + }, + "Microsoft.Extensions.Caching.Abstractions/3.1.8": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.8" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Caching.Memory/3.1.8": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "3.1.8", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.8", + "Microsoft.Extensions.Logging.Abstractions": "3.1.8", + "Microsoft.Extensions.Options": "3.1.8" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.dll": {} + } + }, + "Microsoft.Extensions.Configuration/3.1.8": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "3.1.8" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.dll": {} + } + }, + "Microsoft.Extensions.Configuration.Abstractions/3.1.8": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.8" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Configuration.Binder/3.1.8": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "3.1.8" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll": {} + } + }, + "Microsoft.Extensions.DependencyInjection/3.1.8": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.8" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.dll": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/3.1.8": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Logging/3.1.8": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "3.1.8", + "Microsoft.Extensions.DependencyInjection": "3.1.8", + "Microsoft.Extensions.Logging.Abstractions": "3.1.8", + "Microsoft.Extensions.Options": "3.1.8" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Logging.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Logging.dll": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/3.1.8": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Options/3.1.8": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.8", + "Microsoft.Extensions.Primitives": "3.1.8" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Options.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Options.dll": {} + } + }, + "Microsoft.Extensions.Primitives/3.1.8": { + "type": "package", + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll": {} + } + }, + "Microsoft.NET.Test.Sdk/16.2.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeCoverage": "16.2.0", + "Microsoft.TestPlatform.TestHost": "16.2.0" + }, + "build": { + "build/netcoreapp1.0/Microsoft.NET.Test.Sdk.props": {}, + "build/netcoreapp1.0/Microsoft.NET.Test.Sdk.targets": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/Microsoft.NET.Test.Sdk.props": {} + } + }, + "Microsoft.NETCore.Platforms/2.1.2": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.NETCore.Targets/1.1.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.TestPlatform.ObjectModel/16.2.0": { + "type": "package", + "dependencies": { + "NETStandard.Library": "1.6.0", + "System.ComponentModel.EventBasedAsync": "4.0.11", + "System.ComponentModel.TypeConverter": "4.1.0", + "System.Diagnostics.Process": "4.1.0", + "System.Diagnostics.TextWriterTraceListener": "4.0.0", + "System.Diagnostics.TraceSource": "4.0.0", + "System.Reflection.Metadata": "1.3.0", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.0.0", + "System.Runtime.Loader": "4.0.0", + "System.Runtime.Serialization.Json": "4.0.2", + "System.Runtime.Serialization.Primitives": "4.1.1", + "System.Threading.Thread": "4.0.0", + "System.Xml.XPath.XmlDocument": "4.0.1" + }, + "compile": { + "lib/netstandard1.5/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netstandard1.5/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netstandard1.5/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + }, + "runtime": { + "lib/netstandard1.5/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netstandard1.5/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netstandard1.5/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + }, + "resource": { + "lib/netstandard1.5/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "cs" + }, + "lib/netstandard1.5/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "cs" + }, + "lib/netstandard1.5/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "de" + }, + "lib/netstandard1.5/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "de" + }, + "lib/netstandard1.5/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "es" + }, + "lib/netstandard1.5/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "es" + }, + "lib/netstandard1.5/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "fr" + }, + "lib/netstandard1.5/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "fr" + }, + "lib/netstandard1.5/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "it" + }, + "lib/netstandard1.5/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "it" + }, + "lib/netstandard1.5/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ja" + }, + "lib/netstandard1.5/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ja" + }, + "lib/netstandard1.5/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ko" + }, + "lib/netstandard1.5/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ko" + }, + "lib/netstandard1.5/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pl" + }, + "lib/netstandard1.5/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pl" + }, + "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard1.5/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard1.5/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ru" + }, + "lib/netstandard1.5/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ru" + }, + "lib/netstandard1.5/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "tr" + }, + "lib/netstandard1.5/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "tr" + }, + "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard1.5/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netstandard1.5/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.TestPlatform.TestHost/16.2.0": { + "type": "package", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "16.2.0", + "Newtonsoft.Json": "9.0.1" + }, + "compile": { + "lib/netstandard1.5/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/netstandard1.5/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/netstandard1.5/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/netstandard1.5/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/netstandard1.5/testhost.dll": {} + }, + "runtime": { + "lib/netstandard1.5/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/netstandard1.5/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/netstandard1.5/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/netstandard1.5/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/netstandard1.5/testhost.dll": {} + }, + "resource": { + "lib/netstandard1.5/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "cs" + }, + "lib/netstandard1.5/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "cs" + }, + "lib/netstandard1.5/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "cs" + }, + "lib/netstandard1.5/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "de" + }, + "lib/netstandard1.5/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "de" + }, + "lib/netstandard1.5/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "de" + }, + "lib/netstandard1.5/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "es" + }, + "lib/netstandard1.5/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "es" + }, + "lib/netstandard1.5/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "es" + }, + "lib/netstandard1.5/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "fr" + }, + "lib/netstandard1.5/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "fr" + }, + "lib/netstandard1.5/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "fr" + }, + "lib/netstandard1.5/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "it" + }, + "lib/netstandard1.5/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "it" + }, + "lib/netstandard1.5/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "it" + }, + "lib/netstandard1.5/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ja" + }, + "lib/netstandard1.5/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ja" + }, + "lib/netstandard1.5/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ja" + }, + "lib/netstandard1.5/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ko" + }, + "lib/netstandard1.5/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ko" + }, + "lib/netstandard1.5/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ko" + }, + "lib/netstandard1.5/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pl" + }, + "lib/netstandard1.5/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pl" + }, + "lib/netstandard1.5/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pl" + }, + "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard1.5/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard1.5/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ru" + }, + "lib/netstandard1.5/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ru" + }, + "lib/netstandard1.5/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ru" + }, + "lib/netstandard1.5/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "tr" + }, + "lib/netstandard1.5/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "tr" + }, + "lib/netstandard1.5/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "tr" + }, + "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard1.5/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netstandard1.5/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.Win32.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/Microsoft.Win32.Primitives.dll": {} + } + }, + "Microsoft.Win32.Registry/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Globalization": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "MongoDB.Bson/2.11.2": { + "type": "package", + "compile": { + "lib/netstandard2.0/MongoDB.Bson.dll": {} + }, + "runtime": { + "lib/netstandard2.0/MongoDB.Bson.dll": {} + } + }, + "MongoDB.Driver/2.11.2": { + "type": "package", + "dependencies": { + "MongoDB.Bson": "2.11.2", + "MongoDB.Driver.Core": "2.11.2", + "MongoDB.Libmongocrypt": "1.0.0" + }, + "compile": { + "lib/netstandard2.0/MongoDB.Driver.dll": {} + }, + "runtime": { + "lib/netstandard2.0/MongoDB.Driver.dll": {} + } + }, + "MongoDB.Driver.Core/2.11.2": { + "type": "package", + "dependencies": { + "DnsClient": "1.3.1", + "MongoDB.Bson": "2.11.2", + "MongoDB.Libmongocrypt": "1.0.0", + "SharpCompress": "0.23.0", + "System.Buffers": "4.4.0" + }, + "compile": { + "lib/netstandard2.0/MongoDB.Driver.Core.dll": {} + }, + "runtime": { + "lib/netstandard2.0/MongoDB.Driver.Core.dll": {} + }, + "contentFiles": { + "contentFiles/any/any/_._": { + "buildAction": "None", + "codeLanguage": "any", + "copyToOutput": false + } + }, + "build": { + "build/_._": {} + }, + "runtimeTargets": { + "runtimes/win/native/libzstd.dll": { + "assetType": "native", + "rid": "win" + }, + "runtimes/win/native/snappy32.dll": { + "assetType": "native", + "rid": "win" + }, + "runtimes/win/native/snappy64.dll": { + "assetType": "native", + "rid": "win" + } + } + }, + "MongoDB.Libmongocrypt/1.0.0": { + "type": "package", + "dependencies": { + "NETStandard.Library": "1.6.1" + }, + "compile": { + "lib/netstandard1.5/MongoDB.Libmongocrypt.dll": {} + }, + "runtime": { + "lib/netstandard1.5/MongoDB.Libmongocrypt.dll": {} + }, + "build": { + "build/_._": {} + } + }, + "Moq/4.14.6": { + "type": "package", + "dependencies": { + "Castle.Core": "4.4.0", + "System.Threading.Tasks.Extensions": "4.5.1" + }, + "compile": { + "lib/netstandard2.0/Moq.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Moq.dll": {} + } + }, + "MSTest.TestAdapter/2.0.0": { + "type": "package", + "dependencies": { + "NETStandard.Library": "1.6.1", + "System.Diagnostics.TextWriterTraceListener": "4.3.0" + }, + "build": { + "build/netcoreapp1.0/MSTest.TestAdapter.props": {} + } + }, + "MSTest.TestFramework/2.0.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll": {}, + "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll": {} + }, + "runtime": { + "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll": {}, + "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll": {} + } + }, + "NETStandard.Library/1.6.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.Win32.Primitives": "4.3.0", + "System.AppContext": "4.3.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Console": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.IO.Compression.ZipFile": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.Net.Http": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Net.Sockets": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.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.InteropServices.RuntimeInformation": "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.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Timer": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XDocument": "4.3.0" + } + }, + "Newtonsoft.Json/12.0.3": { + "type": "package", + "compile": { + "lib/netstandard2.0/Newtonsoft.Json.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Newtonsoft.Json.dll": {} + } + }, + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "debian.8-x64" + } + } + }, + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "fedora.23-x64" + } + } + }, + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "fedora.24-x64" + } + } + }, + "runtime.native.System/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.IO.Compression/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Net.Http/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "type": "package", + "dependencies": { + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "dependencies": { + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "opensuse.13.2-x64" + } + } + }, + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "opensuse.42.1-x64" + } + } + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib": { + "assetType": "native", + "rid": "osx.10.10-x64" + } + } + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib": { + "assetType": "native", + "rid": "osx.10.10-x64" + } + } + }, + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "rhel.7-x64" + } + } + }, + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "ubuntu.14.04-x64" + } + } + }, + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "ubuntu.16.04-x64" + } + } + }, + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "ubuntu.16.10-x64" + } + } + }, + "SharpCompress/0.23.0": { + "type": "package", + "dependencies": { + "System.Text.Encoding.CodePages": "4.5.1" + }, + "compile": { + "lib/netstandard2.0/SharpCompress.dll": {} + }, + "runtime": { + "lib/netstandard2.0/SharpCompress.dll": {} + } + }, + "System.AppContext/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/System.AppContext.dll": {} + }, + "runtime": { + "lib/netstandard1.6/System.AppContext.dll": {} + } + }, + "System.Buffers/4.4.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "System.Collections/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Collections.dll": {} + } + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "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" + }, + "compile": { + "ref/netstandard1.3/System.Collections.Concurrent.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Collections.Concurrent.dll": {} + } + }, + "System.Collections.Immutable/1.7.1": { + "type": "package", + "compile": { + "lib/netstandard2.0/System.Collections.Immutable.dll": {} + }, + "runtime": { + "lib/netstandard2.0/System.Collections.Immutable.dll": {} + } + }, + "System.Collections.NonGeneric/4.3.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "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" + }, + "compile": { + "ref/netstandard1.3/System.Collections.NonGeneric.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Collections.NonGeneric.dll": {} + } + }, + "System.Collections.Specialized/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections.NonGeneric": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Extensions": "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" + }, + "compile": { + "ref/netstandard1.3/System.Collections.Specialized.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Collections.Specialized.dll": {} + } + }, + "System.ComponentModel/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.ComponentModel.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.ComponentModel.dll": {} + } + }, + "System.ComponentModel.Annotations/4.7.0": { + "type": "package", + "compile": { + "ref/netstandard2.1/System.ComponentModel.Annotations.dll": {} + }, + "runtime": { + "lib/netstandard2.1/System.ComponentModel.Annotations.dll": {} + } + }, + "System.ComponentModel.EventBasedAsync/4.0.11": { + "type": "package", + "dependencies": { + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.ComponentModel.EventBasedAsync.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.ComponentModel.EventBasedAsync.dll": {} + } + }, + "System.ComponentModel.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "System.ComponentModel": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.ComponentModel.Primitives.dll": {} + }, + "runtime": { + "lib/netstandard1.0/System.ComponentModel.Primitives.dll": {} + } + }, + "System.ComponentModel.TypeConverter/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Collections.NonGeneric": "4.3.0", + "System.Collections.Specialized": "4.3.0", + "System.ComponentModel": "4.3.0", + "System.ComponentModel.Primitives": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "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" + }, + "compile": { + "ref/netstandard1.5/System.ComponentModel.TypeConverter.dll": {} + }, + "runtime": { + "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll": {} + } + }, + "System.Console/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Console.dll": {} + } + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Diagnostics.Debug.dll": {} + } + }, + "System.Diagnostics.DiagnosticSource/4.7.1": { + "type": "package", + "compile": { + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} + } + }, + "System.Diagnostics.Process/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.Win32.Primitives": "4.0.1", + "Microsoft.Win32.Registry": "4.0.0", + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Text.Encoding.Extensions": "4.0.11", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "System.Threading.Thread": "4.0.0", + "System.Threading.ThreadPool": "4.0.10", + "runtime.native.System": "4.0.0" + }, + "compile": { + "ref/netstandard1.4/System.Diagnostics.Process.dll": {} + }, + "runtimeTargets": { + "runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll": { + "assetType": "runtime", + "rid": "linux" + }, + "runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll": { + "assetType": "runtime", + "rid": "osx" + }, + "runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Diagnostics.TextWriterTraceListener/4.3.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.TraceSource": "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" + }, + "compile": { + "ref/netstandard1.3/System.Diagnostics.TextWriterTraceListener.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Diagnostics.TextWriterTraceListener.dll": {} + } + }, + "System.Diagnostics.Tools/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Diagnostics.Tools.dll": {} + } + }, + "System.Diagnostics.TraceSource/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "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", + "runtime.native.System": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Diagnostics.TraceSource.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.Diagnostics.Tracing.dll": {} + } + }, + "System.Dynamic.Runtime/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "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" + }, + "compile": { + "ref/netstandard1.3/System.Dynamic.Runtime.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Dynamic.Runtime.dll": {} + } + }, + "System.Globalization/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Globalization.dll": {} + } + }, + "System.Globalization.Calendars/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Globalization.Calendars.dll": {} + } + }, + "System.Globalization.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "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" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO/4.3.0": { + "type": "package", + "dependencies": { + "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" + }, + "compile": { + "ref/netstandard1.5/System.IO.dll": {} + } + }, + "System.IO.Compression/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Buffers": "4.3.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "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.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.IO.Compression": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.Compression.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO.Compression.ZipFile/4.3.0": { + "type": "package", + "dependencies": { + "System.Buffers": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "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.Text.Encoding": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.Compression.ZipFile.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.IO.Compression.ZipFile.dll": {} + } + }, + "System.IO.FileSystem/4.3.0": { + "type": "package", + "dependencies": { + "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" + }, + "compile": { + "ref/netstandard1.3/System.IO.FileSystem.dll": {} + } + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} + } + }, + "System.Linq/4.3.0": { + "type": "package", + "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" + }, + "compile": { + "ref/netstandard1.6/System.Linq.dll": {} + }, + "runtime": { + "lib/netstandard1.6/System.Linq.dll": {} + } + }, + "System.Linq.Expressions/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Linq": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Emit.Lightweight": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "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" + }, + "compile": { + "ref/netstandard1.6/System.Linq.Expressions.dll": {} + }, + "runtime": { + "lib/netstandard1.6/System.Linq.Expressions.dll": {} + } + }, + "System.Net.Http/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "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.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.Http.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Net.Http.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Net.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.Primitives.dll": {} + } + }, + "System.Net.Sockets/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.Sockets.dll": {} + } + }, + "System.ObjectModel/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.ObjectModel.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.ObjectModel.dll": {} + } + }, + "System.Private.DataContractSerialization/4.1.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Collections.Concurrent": "4.0.12", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Linq": "4.1.0", + "System.Reflection": "4.1.0", + "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.Runtime.Serialization.Primitives": "4.1.1", + "System.Text.Encoding": "4.0.11", + "System.Text.Encoding.Extensions": "4.0.11", + "System.Text.RegularExpressions": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "System.Xml.ReaderWriter": "4.0.11", + "System.Xml.XmlDocument": "4.0.1", + "System.Xml.XmlSerializer": "4.0.11" + }, + "compile": { + "ref/netstandard/_._": {} + }, + "runtime": { + "lib/netstandard1.3/System.Private.DataContractSerialization.dll": {} + } + }, + "System.Reflection/4.3.0": { + "type": "package", + "dependencies": { + "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" + }, + "compile": { + "ref/netstandard1.5/System.Reflection.dll": {} + } + }, + "System.Reflection.Emit/4.3.0": { + "type": "package", + "dependencies": { + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.1/System.Reflection.Emit.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.dll": {} + } + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {} + } + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {} + } + }, + "System.Reflection.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Reflection.Extensions.dll": {} + } + }, + "System.Reflection.Metadata/1.6.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/System.Reflection.Metadata.dll": {} + }, + "runtime": { + "lib/netstandard2.0/System.Reflection.Metadata.dll": {} + } + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Reflection.Primitives.dll": {} + } + }, + "System.Reflection.TypeExtensions/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.Reflection.TypeExtensions.dll": {} + }, + "runtime": { + "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {} + } + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "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" + }, + "compile": { + "ref/netstandard1.0/System.Resources.ResourceManager.dll": {} + } + }, + "System.Runtime/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.dll": {} + } + }, + "System.Runtime.CompilerServices.Unsafe/4.5.2": { + "type": "package", + "compile": { + "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {} + }, + "runtime": { + "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll": {} + } + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.Extensions.dll": {} + } + }, + "System.Runtime.Handles/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Runtime.Handles.dll": {} + } + }, + "System.Runtime.InteropServices/4.3.0": { + "type": "package", + "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" + }, + "compile": { + "ref/netcoreapp1.1/System.Runtime.InteropServices.dll": {} + } + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Threading": "4.3.0", + "runtime.native.System": "4.3.0" + }, + "compile": { + "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtime": { + "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Runtime.Loader/4.0.0": { + "type": "package", + "dependencies": { + "System.IO": "4.1.0", + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.Loader.dll": {} + }, + "runtime": { + "lib/netstandard1.5/System.Runtime.Loader.dll": {} + } + }, + "System.Runtime.Numerics/4.3.0": { + "type": "package", + "dependencies": { + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + }, + "compile": { + "ref/netstandard1.1/System.Runtime.Numerics.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Runtime.Numerics.dll": {} + } + }, + "System.Runtime.Serialization.Json/4.0.2": { + "type": "package", + "dependencies": { + "System.IO": "4.1.0", + "System.Private.DataContractSerialization": "4.1.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Runtime.Serialization.Json.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Runtime.Serialization.Json.dll": {} + } + }, + "System.Runtime.Serialization.Primitives/4.1.1": { + "type": "package", + "dependencies": { + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} + } + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "type": "package", + "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" + }, + "compile": { + "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {} + }, + "runtimeTargets": { + "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "osx" + }, + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Cng/4.3.0": { + "type": "package", + "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" + }, + "compile": { + "ref/netstandard1.6/_._": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Csp/4.3.0": { + "type": "package", + "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" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "type": "package", + "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" + }, + "compile": { + "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "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" + }, + "compile": { + "ref/netstandard1.6/_._": {} + }, + "runtime": { + "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": { + "assetType": "runtime", + "rid": "unix" + } + } + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "type": "package", + "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" + }, + "compile": { + "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} + } + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "type": "package", + "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" + }, + "compile": { + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Text.Encoding.dll": {} + } + }, + "System.Text.Encoding.CodePages/4.5.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "System.Runtime.CompilerServices.Unsafe": "4.5.2" + }, + "compile": { + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll": {} + }, + "runtime": { + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netcoreapp2.0/System.Text.Encoding.CodePages.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Text.Encoding.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": {} + } + }, + "System.Text.RegularExpressions/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netcoreapp1.1/System.Text.RegularExpressions.dll": {} + }, + "runtime": { + "lib/netstandard1.6/System.Text.RegularExpressions.dll": {} + } + }, + "System.Threading/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Threading.dll": {} + } + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.Tasks.dll": {} + } + }, + "System.Threading.Tasks.Extensions/4.5.3": { + "type": "package", + "compile": { + "ref/netcoreapp2.1/_._": {} + }, + "runtime": { + "lib/netcoreapp2.1/_._": {} + } + }, + "System.Threading.Thread/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.Thread.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Threading.Thread.dll": {} + } + }, + "System.Threading.ThreadPool/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0", + "System.Runtime.Handles": "4.0.1" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/System.Threading.ThreadPool.dll": {} + } + }, + "System.Threading.Timer/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.2/System.Threading.Timer.dll": {} + } + }, + "System.ValueTuple/4.5.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "System.Xml.ReaderWriter/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "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.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Tasks.Extensions": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Xml.ReaderWriter.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Xml.ReaderWriter.dll": {} + } + }, + "System.Xml.XDocument/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.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.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Xml.XDocument.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XDocument.dll": {} + } + }, + "System.Xml.XmlDocument/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.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.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Xml.XmlDocument.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XmlDocument.dll": {} + } + }, + "System.Xml.XmlSerializer/4.0.11": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Linq": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Emit": "4.0.1", + "System.Reflection.Emit.ILGeneration": "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.Text.RegularExpressions": "4.1.0", + "System.Threading": "4.0.11", + "System.Xml.ReaderWriter": "4.0.11", + "System.Xml.XmlDocument": "4.0.1" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XmlSerializer.dll": {} + } + }, + "System.Xml.XPath/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "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.Xml.ReaderWriter": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Xml.XPath.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XPath.dll": {} + } + }, + "System.Xml.XPath.XmlDocument/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "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.Xml.ReaderWriter": "4.0.11", + "System.Xml.XPath": "4.0.1", + "System.Xml.XmlDocument": "4.0.1" + }, + "compile": { + "ref/netstandard1.3/System.Xml.XPath.XmlDocument.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XPath.XmlDocument.dll": {} + } + }, + "JsonApiDotNetCore.MongoDb/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v3.1", + "dependencies": { + "JsonApiDotNetCore": "4.0.0-beta1", + "MongoDB.Driver": "2.11.2" + }, + "compile": { + "bin/placeholder/JsonApiDotNetCore.MongoDb.dll": {} + }, + "runtime": { + "bin/placeholder/JsonApiDotNetCore.MongoDb.dll": {} + } + } + } + }, + "libraries": { + "Ben.Demystifier/0.1.6": { + "sha512": "sYI8+ANUo78i/vIq9Vjrjjl6A00yVbT6XsuSVvUMVRVEKJHXZu4VE00RZHg/CA7QxmaQ1zfw/Bs6DAU+OJUNAg==", + "type": "package", + "path": "ben.demystifier/0.1.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ben.demystifier.0.1.6.nupkg.sha512", + "ben.demystifier.nuspec", + "lib/net45/Ben.Demystifier.dll", + "lib/netstandard2.0/Ben.Demystifier.dll", + "src/Ben.Demystifier/Ben.Demystifier.csproj", + "src/Ben.Demystifier/EnhancedStackFrame.cs", + "src/Ben.Demystifier/EnhancedStackTrace.Frames.cs", + "src/Ben.Demystifier/EnhancedStackTrace.cs", + "src/Ben.Demystifier/Enumerable/EnumerableIList.cs", + "src/Ben.Demystifier/Enumerable/EnumeratorIList.cs", + "src/Ben.Demystifier/Enumerable/IEnumerableIList.cs", + "src/Ben.Demystifier/ExceptionExtentions.cs", + "src/Ben.Demystifier/Internal/ILReader.cs", + "src/Ben.Demystifier/Internal/PortablePdbReader.cs", + "src/Ben.Demystifier/Internal/ReflectionHelper.cs", + "src/Ben.Demystifier/ResolvedMethod.cs", + "src/Ben.Demystifier/ResolvedParameter.cs", + "src/Ben.Demystifier/StringBuilderExtentions.cs", + "src/Ben.Demystifier/TypeNameHelper.cs", + "src/Ben.Demystifier/ValueTupleResolvedParameter.cs" + ] + }, + "Castle.Core/4.4.0": { + "sha512": "b5rRL5zeaau1y/5hIbI+6mGw3cwun16YjkHZnV9RRT5UyUIFsgLmNXJ0YnIN9p8Hw7K7AbG1q1UclQVU3DinAQ==", + "type": "package", + "path": "castle.core/4.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ASL - Apache Software Foundation License.txt", + "CHANGELOG.md", + "LICENSE", + "castle.core.4.4.0.nupkg.sha512", + "castle.core.nuspec", + "lib/net35/Castle.Core.dll", + "lib/net35/Castle.Core.xml", + "lib/net40/Castle.Core.dll", + "lib/net40/Castle.Core.xml", + "lib/net45/Castle.Core.dll", + "lib/net45/Castle.Core.xml", + "lib/netstandard1.3/Castle.Core.dll", + "lib/netstandard1.3/Castle.Core.xml", + "lib/netstandard1.5/Castle.Core.dll", + "lib/netstandard1.5/Castle.Core.xml", + "readme.txt" + ] + }, + "coverlet.collector/1.0.1": { + "sha512": "RAuno8s7DBGo2IdV/1d8YSnXMd/728K3PBT5R6/kfGx1yunBZmavlaFQfhGe7Q7N2nUMkvVET+7ITn3+KSg+Uw==", + "type": "package", + "path": "coverlet.collector/1.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/netstandard1.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "build/netstandard1.0/Microsoft.TestPlatform.CoreUtilities.dll", + "build/netstandard1.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "build/netstandard1.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "build/netstandard1.0/Mono.Cecil.Mdb.dll", + "build/netstandard1.0/Mono.Cecil.Pdb.dll", + "build/netstandard1.0/Mono.Cecil.Rocks.dll", + "build/netstandard1.0/Mono.Cecil.dll", + "build/netstandard1.0/Newtonsoft.Json.dll", + "build/netstandard1.0/System.Xml.XPath.XmlDocument.dll", + "build/netstandard1.0/coverlet.collector.deps.json", + "build/netstandard1.0/coverlet.collector.dll", + "build/netstandard1.0/coverlet.collector.pdb", + "build/netstandard1.0/coverlet.collector.targets", + "build/netstandard1.0/coverlet.core.dll", + "build/netstandard1.0/coverlet.core.pdb", + "coverlet.collector.1.0.1.nupkg.sha512", + "coverlet.collector.nuspec" + ] + }, + "DnsClient/1.3.1": { + "sha512": "b9XczgqSjs3dd+OlV799jn+LXxdfirln1q36GKjs3QwWBhjhgIvgHLEG5s2VrBLcP4ogQjtA0PZ5+AmRJ35Vhg==", + "type": "package", + "path": "dnsclient/1.3.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "dnsclient.1.3.1.nupkg.sha512", + "dnsclient.nuspec", + "icon.png", + "lib/net45/DnsClient.dll", + "lib/net45/DnsClient.xml", + "lib/net471/DnsClient.dll", + "lib/net471/DnsClient.xml", + "lib/netstandard1.3/DnsClient.dll", + "lib/netstandard1.3/DnsClient.xml", + "lib/netstandard2.0/DnsClient.dll", + "lib/netstandard2.0/DnsClient.xml", + "lib/netstandard2.1/DnsClient.dll", + "lib/netstandard2.1/DnsClient.xml" + ] + }, + "Humanizer/2.7.9": { + "sha512": "cnIWMLmibmotgv13Jz0pA5ZrS4pczuq3SE2BBOmWnZNBeypUJCM82Gu1LrfjFy5ZxIPGPVzlvHt0ejo2WrbQVw==", + "type": "package", + "path": "humanizer/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.2.7.9.nupkg.sha512", + "humanizer.nuspec" + ] + }, + "Humanizer.Core/2.7.9": { + "sha512": "CvBPqAgYcvRCDgtHi9pUdPpZqWGyqfJe02qDugMCy4/xia+q0xm/xxqTO55aZkJapdgqrvHb0I5u+sHLzovp+Q==", + "type": "package", + "path": "humanizer.core/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.2.7.9.nupkg.sha512", + "humanizer.core.nuspec", + "lib/netstandard1.0/Humanizer.dll", + "lib/netstandard1.0/Humanizer.xml", + "lib/netstandard2.0/Humanizer.dll", + "lib/netstandard2.0/Humanizer.xml" + ] + }, + "Humanizer.Core.af/2.7.9": { + "sha512": "7NWBpe6YeZ6G1NVT2mgwB4RdZn9g9zbUtssae47TFuSUxCFE8SdSiiwXu6QG+twjuaa15B833HnqKMJejlNxcA==", + "type": "package", + "path": "humanizer.core.af/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.af.2.7.9.nupkg.sha512", + "humanizer.core.af.nuspec", + "lib/netstandard1.0/af/Humanizer.resources.dll", + "lib/netstandard2.0/af/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.ar/2.7.9": { + "sha512": "2SrkqJ26woxPW8Zc5lHXJX7nftouDnhFbMpDIYdkb5itNSJzPxl3AkXLHlh5WyfauH7r/p29WHBlik4A4Skq+A==", + "type": "package", + "path": "humanizer.core.ar/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.ar.2.7.9.nupkg.sha512", + "humanizer.core.ar.nuspec", + "lib/netstandard1.0/ar/Humanizer.resources.dll", + "lib/netstandard2.0/ar/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.bg/2.7.9": { + "sha512": "kpRp7agDo5WaMSGBHgybQaQUhUy2EPe7p6KoIe020XF3TCcKMPfVmIcm6m4sVwdXjaIWfkWhkPBmVwKNfcmovg==", + "type": "package", + "path": "humanizer.core.bg/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.bg.2.7.9.nupkg.sha512", + "humanizer.core.bg.nuspec", + "lib/netstandard1.0/bg/Humanizer.resources.dll", + "lib/netstandard2.0/bg/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.bn-BD/2.7.9": { + "sha512": "h5oChbNlv+qgUBOMf36u5cQMhXAKPbRh2cRXC2sgB267nDhtKz0531hRrWY0FlsjYATK92s6KmJtq8eoLmoJuw==", + "type": "package", + "path": "humanizer.core.bn-bd/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.bn-bd.2.7.9.nupkg.sha512", + "humanizer.core.bn-bd.nuspec", + "lib/netstandard1.0/bn-BD/Humanizer.resources.dll", + "lib/netstandard2.0/bn-BD/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.cs/2.7.9": { + "sha512": "afdXXIkcKuhSxToZv3BiFj9pjPV+Wn/bbQhJHDKUBPecJRM63/fRhP+O6XhSBp4nzfAu9qgOUopzSk4yAbGVxg==", + "type": "package", + "path": "humanizer.core.cs/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.cs.2.7.9.nupkg.sha512", + "humanizer.core.cs.nuspec", + "lib/netstandard1.0/cs/Humanizer.resources.dll", + "lib/netstandard2.0/cs/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.da/2.7.9": { + "sha512": "H7Okf6sb8KCxq1mfGddgzeM/X9u1VZ5eQhL4NyqP7AsxllUVEittCHkdZpOKq1ZgdKIC/YCmLEF3KbDAwm6PiQ==", + "type": "package", + "path": "humanizer.core.da/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.da.2.7.9.nupkg.sha512", + "humanizer.core.da.nuspec", + "lib/netstandard1.0/da/Humanizer.resources.dll", + "lib/netstandard2.0/da/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.de/2.7.9": { + "sha512": "v//DZRFjcrWMFD/ssGKm/9ldIqvKrPMC6yyavsF3bdSH+U92XZwJsNWdMh6tR4tjZCnpSTGjpeT11G0wRLjWKA==", + "type": "package", + "path": "humanizer.core.de/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.de.2.7.9.nupkg.sha512", + "humanizer.core.de.nuspec", + "lib/netstandard1.0/de/Humanizer.resources.dll", + "lib/netstandard2.0/de/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.el/2.7.9": { + "sha512": "Bp8XnGr8OWaRmYemcuKpU6jrA9xrx8TQIq9wad7VIx89VVIbnilCYY68EqsmPHa9wNJq+gpglHPZbKEr0CNKcA==", + "type": "package", + "path": "humanizer.core.el/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.el.2.7.9.nupkg.sha512", + "humanizer.core.el.nuspec", + "lib/netstandard1.0/el/Humanizer.resources.dll", + "lib/netstandard2.0/el/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.es/2.7.9": { + "sha512": "mc5t7BVXYBTn7jymWtHGSdZim5zg9RyCMrl1+yIxiB74KPUH3VD5WUoIuB0HGc9g29SNl37jj7curx9dX8AaUg==", + "type": "package", + "path": "humanizer.core.es/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.es.2.7.9.nupkg.sha512", + "humanizer.core.es.nuspec", + "lib/netstandard1.0/es/Humanizer.resources.dll", + "lib/netstandard2.0/es/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.fa/2.7.9": { + "sha512": "pl6o8wsfIoiRzBK/RXwuVIZNj/UKc2RPgFdpawbOXpQFGkUY1/lTBqQo4zrbM06U/OAWc3R4ZnaPiNSNAs0o3w==", + "type": "package", + "path": "humanizer.core.fa/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.fa.2.7.9.nupkg.sha512", + "humanizer.core.fa.nuspec", + "lib/netstandard1.0/fa/Humanizer.resources.dll", + "lib/netstandard2.0/fa/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.fi-FI/2.7.9": { + "sha512": "GlmHze9WVElfWK2gh361/eLx5r0XDyTY7K/0VdOpV0tIesyNpOqibtzJxt6JCTJk3I0XXxrfU7tPkv7nBkEpzQ==", + "type": "package", + "path": "humanizer.core.fi-fi/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.fi-fi.2.7.9.nupkg.sha512", + "humanizer.core.fi-fi.nuspec", + "lib/netstandard1.0/fi-FI/Humanizer.resources.dll", + "lib/netstandard2.0/fi-FI/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.fr/2.7.9": { + "sha512": "68QjBxLIv9by0uAfCAr8d7+Giv0m8j21lixv/pEdo21/dJfPZoBvTXp9eLhww3KwPZ1BkjJoY8an637Hlsmmtw==", + "type": "package", + "path": "humanizer.core.fr/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.fr.2.7.9.nupkg.sha512", + "humanizer.core.fr.nuspec", + "lib/netstandard1.0/fr/Humanizer.resources.dll", + "lib/netstandard2.0/fr/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.fr-BE/2.7.9": { + "sha512": "F4lxJn9HCRKxUs0ZI83trIb9ipb1Urzv3P6Og3fsYL1tXvjlbx8XWRPIGdbbCQIYNyYPSvyohCGs/yxZCLhtLA==", + "type": "package", + "path": "humanizer.core.fr-be/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.fr-be.2.7.9.nupkg.sha512", + "humanizer.core.fr-be.nuspec", + "lib/netstandard1.0/fr-BE/Humanizer.resources.dll", + "lib/netstandard2.0/fr-BE/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.he/2.7.9": { + "sha512": "lc0Z4pIbzH9bNAbd+3CpG/gt74O8ywZZjlWut9xnNjvcrCi9S6Dv9zk5r/CLGXRPxuzK1/HeQUcBmReW15geHg==", + "type": "package", + "path": "humanizer.core.he/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.he.2.7.9.nupkg.sha512", + "humanizer.core.he.nuspec", + "lib/netstandard1.0/he/Humanizer.resources.dll", + "lib/netstandard2.0/he/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.hr/2.7.9": { + "sha512": "PJlXYwzfElGAkv74VlIQK3N2Vs2JPCBtDtvMw7G6YVDp2ZTeKbFQs31K8q93Sz7N8Bpt01OPho7DK7KO1UUYxQ==", + "type": "package", + "path": "humanizer.core.hr/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.hr.2.7.9.nupkg.sha512", + "humanizer.core.hr.nuspec", + "lib/netstandard1.0/hr/Humanizer.resources.dll", + "lib/netstandard2.0/hr/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.hu/2.7.9": { + "sha512": "4hLoqzUwosPieibLZAR5Q5NHYLt4bgiBRtvX13m+nAbKfnboinJlgS0bMmb1pWzzIg7WB1qOCUVtEdVWstheBw==", + "type": "package", + "path": "humanizer.core.hu/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.hu.2.7.9.nupkg.sha512", + "humanizer.core.hu.nuspec", + "lib/netstandard1.0/hu/Humanizer.resources.dll", + "lib/netstandard2.0/hu/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.id/2.7.9": { + "sha512": "0ynKnZhpOaaeQ9x60BDVrS4w83CWTvDnAoALUt9dxtbmQDFsMkcyJBP6x1ACSLYcrh6/AJ0Jt1KzHjaw/qmjOQ==", + "type": "package", + "path": "humanizer.core.id/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.id.2.7.9.nupkg.sha512", + "humanizer.core.id.nuspec", + "lib/netstandard1.0/id/Humanizer.resources.dll", + "lib/netstandard2.0/id/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.it/2.7.9": { + "sha512": "i9meHhQ2J3byqatNPr/8uTLIdV9pR/My63b4Hdk4GaiF4ibeAb3ZAGiBSb8whCE0AtM6586EE2Nxkc0xsCfz/A==", + "type": "package", + "path": "humanizer.core.it/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.it.2.7.9.nupkg.sha512", + "humanizer.core.it.nuspec", + "lib/netstandard1.0/it/Humanizer.resources.dll", + "lib/netstandard2.0/it/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.ja/2.7.9": { + "sha512": "pP0hRXWjewxA4TwEE91VWfnARMRI62GvatwoeXIaSWJLNzx3vGhG+ZoJRMuFJjsw48SOFgkqI8Q7vdJRTyxwIQ==", + "type": "package", + "path": "humanizer.core.ja/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.ja.2.7.9.nupkg.sha512", + "humanizer.core.ja.nuspec", + "lib/netstandard1.0/ja/Humanizer.resources.dll", + "lib/netstandard2.0/ja/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.lv/2.7.9": { + "sha512": "2RwYeRYTtI0eT4vbbxYE7bwKK/jJCrG/WVk1KAWA1+AsbPpakqkedpuMq1VMlx1GYg7IK4FrA+nTfYqLO42IOQ==", + "type": "package", + "path": "humanizer.core.lv/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.lv.2.7.9.nupkg.sha512", + "humanizer.core.lv.nuspec", + "lib/netstandard1.0/lv/Humanizer.resources.dll", + "lib/netstandard2.0/lv/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.ms-MY/2.7.9": { + "sha512": "6O9CdO239ddC2inn32ialw1BEkBOHoBoHhkaw8x114SlnYEDRaS9a+GRhJZ0d6s3H3IUznbk3qv7sSqc8XI67g==", + "type": "package", + "path": "humanizer.core.ms-my/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.ms-my.2.7.9.nupkg.sha512", + "humanizer.core.ms-my.nuspec", + "lib/netstandard1.0/ms-MY/Humanizer.resources.dll", + "lib/netstandard2.0/ms-MY/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.mt/2.7.9": { + "sha512": "AoUiq+peyhTZURaHcTzeYcwIWp1pmDS5iWY3opSrS/KdhP2HKlLWjf+ofcFhsDBgsqMMhT+LF4PMJ1qj6NVcFQ==", + "type": "package", + "path": "humanizer.core.mt/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.mt.2.7.9.nupkg.sha512", + "humanizer.core.mt.nuspec", + "lib/netstandard1.0/mt/Humanizer.resources.dll", + "lib/netstandard2.0/mt/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.nb/2.7.9": { + "sha512": "Bm+3Gsk1jjwyRuYp0rRSRPawCtP4/D4Fk5uXJivNGibsScvyuaets8kBQxD/SyJjIZLrRErN5Tq7YPyeUADD3w==", + "type": "package", + "path": "humanizer.core.nb/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.nb.2.7.9.nupkg.sha512", + "humanizer.core.nb.nuspec", + "lib/netstandard1.0/nb/Humanizer.resources.dll", + "lib/netstandard2.0/nb/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.nb-NO/2.7.9": { + "sha512": "EpDL9LlyWNC+/Kk1f4cA8goiFgrSQ2evpNYRzUCJCSSmA5F2OR7owkGiwWtB3nNS/SRkrC2ouQBwiXPj8bkQHg==", + "type": "package", + "path": "humanizer.core.nb-no/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.nb-no.2.7.9.nupkg.sha512", + "humanizer.core.nb-no.nuspec", + "lib/netstandard1.0/nb-NO/Humanizer.resources.dll", + "lib/netstandard2.0/nb-NO/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.nl/2.7.9": { + "sha512": "lB5a6UoclIfS0zHvczEzoWjdkUnS+aS4UibHt5bQWNTZgzxJTSVYe1X8/L9usSRk6h1WHy4O47mplfwdCtEsIg==", + "type": "package", + "path": "humanizer.core.nl/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.nl.2.7.9.nupkg.sha512", + "humanizer.core.nl.nuspec", + "lib/netstandard1.0/nl/Humanizer.resources.dll", + "lib/netstandard2.0/nl/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.pl/2.7.9": { + "sha512": "SNMNRp3GklOpVFwFXEMaUggCR27rVbD2z1CPmSVL+2RlIHcdrdNbrxRX8neKxzl1Enmue550Gg9ipYRTrZmF3Q==", + "type": "package", + "path": "humanizer.core.pl/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.pl.2.7.9.nupkg.sha512", + "humanizer.core.pl.nuspec", + "lib/netstandard1.0/pl/Humanizer.resources.dll", + "lib/netstandard2.0/pl/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.pt/2.7.9": { + "sha512": "M5/hzNDPJD/Owp5S30LqBwukj8WmxA8U0XJIK9BEpYOyuuegsp8W4RaCvj79BNWWkjayBjDjHmq1f4E2UvtCgg==", + "type": "package", + "path": "humanizer.core.pt/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.pt.2.7.9.nupkg.sha512", + "humanizer.core.pt.nuspec", + "lib/netstandard1.0/pt/Humanizer.resources.dll", + "lib/netstandard2.0/pt/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.ro/2.7.9": { + "sha512": "dUlwWOhqMz2y/uALmLIfey8pvV3tLdDyMfVZnPPqt9pNfihtnJWzojRCmf1+oMJ5O7uEmpxE1c5HafIQLd1fcQ==", + "type": "package", + "path": "humanizer.core.ro/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.ro.2.7.9.nupkg.sha512", + "humanizer.core.ro.nuspec", + "lib/netstandard1.0/ro/Humanizer.resources.dll", + "lib/netstandard2.0/ro/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.ru/2.7.9": { + "sha512": "2fQtt7WMsjMSO2pFzC/vTx6NLpd7BYW0JLjAQkHdEb43omWh5oWJ02Y81uvnw/AUn0KHBL0nf8KBIEthwvXoqQ==", + "type": "package", + "path": "humanizer.core.ru/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.ru.2.7.9.nupkg.sha512", + "humanizer.core.ru.nuspec", + "lib/netstandard1.0/ru/Humanizer.resources.dll", + "lib/netstandard2.0/ru/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.sk/2.7.9": { + "sha512": "+C6+xxs3/So+BjSRYbi6LqBU6J9/UDI1bRnv43gOauVop0gWrHZOg/J44/CL2yiD7l6SOY4VLtYAJDxONsXklQ==", + "type": "package", + "path": "humanizer.core.sk/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.sk.2.7.9.nupkg.sha512", + "humanizer.core.sk.nuspec", + "lib/netstandard1.0/sk/Humanizer.resources.dll", + "lib/netstandard2.0/sk/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.sl/2.7.9": { + "sha512": "oOBrpVFUcLw+oJ3N2W+gtKoU9XuvmSbGRbmnqI+cKaLoMqxVvUw+Er3btaJ9UMkYS5zv7N/zhewWPP4uZBWRig==", + "type": "package", + "path": "humanizer.core.sl/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.sl.2.7.9.nupkg.sha512", + "humanizer.core.sl.nuspec", + "lib/netstandard1.0/sl/Humanizer.resources.dll", + "lib/netstandard2.0/sl/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.sr/2.7.9": { + "sha512": "1q5s+UWN79g+bXshpsdjEb1oVORg+FzNpayR1jup8T2U7jtW2AIM5A9Uol+EGazZzgbt2rwluCtvUjNUeYkmaQ==", + "type": "package", + "path": "humanizer.core.sr/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.sr.2.7.9.nupkg.sha512", + "humanizer.core.sr.nuspec", + "lib/netstandard1.0/sr/Humanizer.resources.dll", + "lib/netstandard2.0/sr/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.sr-Latn/2.7.9": { + "sha512": "J5BSJO0Gm2g8M/nAnii4zOIg0Tk4RjwbKvhvSjzaPm8dZGCZvEWVmYuQ7CFNezEfA0EGSmKnlsZRoy2TVN2MRA==", + "type": "package", + "path": "humanizer.core.sr-latn/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.sr-latn.2.7.9.nupkg.sha512", + "humanizer.core.sr-latn.nuspec", + "lib/netstandard1.0/sr-Latn/Humanizer.resources.dll", + "lib/netstandard2.0/sr-Latn/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.sv/2.7.9": { + "sha512": "xwIXhOf7vSYCc3s/mBRU/1PxOcOFgC/hYY3IjHR986YDbzUOoGlpt4Cz2inysMfK3fceTQKQny/0rtbxvMzhAg==", + "type": "package", + "path": "humanizer.core.sv/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.sv.2.7.9.nupkg.sha512", + "humanizer.core.sv.nuspec", + "lib/netstandard1.0/sv/Humanizer.resources.dll", + "lib/netstandard2.0/sv/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.tr/2.7.9": { + "sha512": "e0yPBy56+mOiUBV99a7H4nZYSh5mGR1/dW/Z6pBmLftEBnusDn850jrMJ/u2aFh5Vj8tipB0/DoSd3jp/JKM7A==", + "type": "package", + "path": "humanizer.core.tr/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.tr.2.7.9.nupkg.sha512", + "humanizer.core.tr.nuspec", + "lib/netstandard1.0/tr/Humanizer.resources.dll", + "lib/netstandard2.0/tr/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.uk/2.7.9": { + "sha512": "8s6LdUjCR+b9K3IC25d68VikDh5d9HKWxnZngiVLfPlyMa0UYX9GRAynN/9LWRoOiCL4QRxMeeZYWgEbCK7pcw==", + "type": "package", + "path": "humanizer.core.uk/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.uk.2.7.9.nupkg.sha512", + "humanizer.core.uk.nuspec", + "lib/netstandard1.0/uk/Humanizer.resources.dll", + "lib/netstandard2.0/uk/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.uz-Cyrl-UZ/2.7.9": { + "sha512": "jeGA4WzCQeFKgT4Y1SdgT5zGPAwDP2LMjK7btRyO7X6KFfZ6vHZ8vw01yO1ra2NfeFF7clI6Bi/bP7CcF9Gseg==", + "type": "package", + "path": "humanizer.core.uz-cyrl-uz/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.uz-cyrl-uz.2.7.9.nupkg.sha512", + "humanizer.core.uz-cyrl-uz.nuspec", + "lib/netstandard1.0/uz-Cyrl-UZ/Humanizer.resources.dll", + "lib/netstandard2.0/uz-Cyrl-UZ/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.uz-Latn-UZ/2.7.9": { + "sha512": "8GHFG4vjHrkJauZxfrySIKR7uIFi7E28IGtJ2rhuPWrXZF7ERvj8o5ByuSKBk6/bNKdnOQ0RSyA3VAPG1JGpPQ==", + "type": "package", + "path": "humanizer.core.uz-latn-uz/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.uz-latn-uz.2.7.9.nupkg.sha512", + "humanizer.core.uz-latn-uz.nuspec", + "lib/netstandard1.0/uz-Latn-UZ/Humanizer.resources.dll", + "lib/netstandard2.0/uz-Latn-UZ/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.vi/2.7.9": { + "sha512": "lcLh5EkLNanMtZhC5XNQP/so+QiktIrIXoJCO8YFe2ZUdgmIGT5GDTrBbdgA2aHTTOAHqrtxGnqkODe1cQL/bA==", + "type": "package", + "path": "humanizer.core.vi/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.vi.2.7.9.nupkg.sha512", + "humanizer.core.vi.nuspec", + "lib/netstandard1.0/vi/Humanizer.resources.dll", + "lib/netstandard2.0/vi/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.zh-CN/2.7.9": { + "sha512": "Ogs+d48nUr5yeFy6S7LxilKcuD4u8lmJx4ahbGZiDkQD7ARcTRKEbkcwB6bFf8k87W80BVkNkMSQEVUP1rbGZg==", + "type": "package", + "path": "humanizer.core.zh-cn/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.zh-cn.2.7.9.nupkg.sha512", + "humanizer.core.zh-cn.nuspec", + "lib/netstandard1.0/zh-CN/Humanizer.resources.dll", + "lib/netstandard2.0/zh-CN/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.zh-Hans/2.7.9": { + "sha512": "Eqd7xYf9WyAG5JA/Gz+vI8BWbZH88f/3D4QymqPzv1MD8VfZ+nFfg4xamGhXvqihRHmWShLiQx+eVoD5Vg6DNA==", + "type": "package", + "path": "humanizer.core.zh-hans/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.zh-hans.2.7.9.nupkg.sha512", + "humanizer.core.zh-hans.nuspec", + "lib/netstandard1.0/zh-Hans/Humanizer.resources.dll", + "lib/netstandard2.0/zh-Hans/Humanizer.resources.dll" + ] + }, + "Humanizer.Core.zh-Hant/2.7.9": { + "sha512": "I1zelHgyJDZ2iTCHEmWrCa+PyFPEWDaYxPMpqPwZlgL2EvBHyJRwy0eJFYHHg+YAxcEVwgfsvzr8snhn/IDzrA==", + "type": "package", + "path": "humanizer.core.zh-hant/2.7.9", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.zh-hant.2.7.9.nupkg.sha512", + "humanizer.core.zh-hant.nuspec", + "lib/netstandard1.0/zh-Hant/Humanizer.resources.dll", + "lib/netstandard2.0/zh-Hant/Humanizer.resources.dll" + ] + }, + "JsonApiDotNetCore/4.0.0-beta1": { + "sha512": "rNrSWk2+GHx9iG2wny86rk4Tir0tdv1rNhZ/CFEMrURkSElws/R0ibxhmqSsof5337kwvG9xpX/gLjM4qPXSCA==", + "type": "package", + "path": "jsonapidotnetcore/4.0.0-beta1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "jsonapidotnetcore.4.0.0-beta1.nupkg.sha512", + "jsonapidotnetcore.nuspec", + "lib/netcoreapp3.1/JsonApiDotNetCore.dll", + "lib/netcoreapp3.1/JsonApiDotNetCore.xml" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/1.1.1": { + "sha512": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/1.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net461/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.1.1.1.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "ref/net461/Microsoft.Bcl.AsyncInterfaces.dll", + "ref/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.Bcl.HashCode/1.1.0": { + "sha512": "J2G1k+u5unBV+aYcwxo94ip16Rkp65pgWFb0R6zwJipzWNMgvqlWeuI7/+R+e8bob66LnSG+llLJ+z8wI94cHg==", + "type": "package", + "path": "microsoft.bcl.hashcode/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/Microsoft.Bcl.HashCode.dll", + "lib/net461/Microsoft.Bcl.HashCode.xml", + "lib/netcoreapp2.1/Microsoft.Bcl.HashCode.dll", + "lib/netcoreapp2.1/Microsoft.Bcl.HashCode.xml", + "lib/netstandard2.0/Microsoft.Bcl.HashCode.dll", + "lib/netstandard2.0/Microsoft.Bcl.HashCode.xml", + "lib/netstandard2.1/Microsoft.Bcl.HashCode.dll", + "lib/netstandard2.1/Microsoft.Bcl.HashCode.xml", + "microsoft.bcl.hashcode.1.1.0.nupkg.sha512", + "microsoft.bcl.hashcode.nuspec", + "ref/net461/Microsoft.Bcl.HashCode.dll", + "ref/netcoreapp2.1/Microsoft.Bcl.HashCode.dll", + "ref/netstandard2.0/Microsoft.Bcl.HashCode.dll", + "ref/netstandard2.1/Microsoft.Bcl.HashCode.dll", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.CodeCoverage/16.2.0": { + "sha512": "fKiUOhhMP3IN1qM2tDHPWzW4JRbriFkIPiIzKUwMWT+Q+80bycxkLLCvxmVFoeA7gvWegNbTUjaX7mL3MM9XKg==", + "type": "package", + "path": "microsoft.codecoverage/16.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/netstandard1.0/CodeCoverage/CodeCoverage.config", + "build/netstandard1.0/CodeCoverage/CodeCoverage.exe", + "build/netstandard1.0/CodeCoverage/amd64/covrun64.dll", + "build/netstandard1.0/CodeCoverage/amd64/msdia140.dll", + "build/netstandard1.0/CodeCoverage/codecoveragemessages.dll", + "build/netstandard1.0/CodeCoverage/covrun32.dll", + "build/netstandard1.0/CodeCoverage/msdia140.dll", + "build/netstandard1.0/Microsoft.CodeCoverage.props", + "build/netstandard1.0/Microsoft.CodeCoverage.targets", + "build/netstandard1.0/Microsoft.VisualStudio.TraceDataCollector.dll", + "build/netstandard1.0/cs/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard1.0/de/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard1.0/es/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard1.0/fr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard1.0/it/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard1.0/ja/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard1.0/ko/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard1.0/pl/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard1.0/pt-BR/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard1.0/ru/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard1.0/tr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard1.0/zh-Hans/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard1.0/zh-Hant/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "lib/net45/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "lib/netcoreapp1.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "microsoft.codecoverage.16.2.0.nupkg.sha512", + "microsoft.codecoverage.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore/3.1.8": { + "sha512": "bI+yxA329qf+8efR6A35/3L2NLekcsWJOfXakA37ILUiWcX1qp/XsXmEi6SYMpMikioy0a5p0IU8gHoqSvtLaA==", + "type": "package", + "path": "microsoft.entityframeworkcore/3.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.dll", + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.xml", + "microsoft.entityframeworkcore.3.1.8.nupkg.sha512", + "microsoft.entityframeworkcore.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Abstractions/3.1.8": { + "sha512": "bJ6Crbz3FP2Cze1DXg+FiE5l0AFK8y6j32LP+6tMFrpdJc0XB8XBGXEX6w9baulxXC8U3OYUq1yxFVwgNdVyJw==", + "type": "package", + "path": "microsoft.entityframeworkcore.abstractions/3.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Abstractions.dll", + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Abstractions.xml", + "microsoft.entityframeworkcore.abstractions.3.1.8.nupkg.sha512", + "microsoft.entityframeworkcore.abstractions.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Analyzers/3.1.8": { + "sha512": "Cm1+PV53O/xN4P8fMkSZq9aqyXRjEZ5kmuWs7W4yE4V4GLgrqTCRmtooM5tUPM3R7VI47hAa8Aab+UuSRvpU+w==", + "type": "package", + "path": "microsoft.entityframeworkcore.analyzers/3.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll", + "lib/netstandard2.0/_._", + "microsoft.entityframeworkcore.analyzers.3.1.8.nupkg.sha512", + "microsoft.entityframeworkcore.analyzers.nuspec" + ] + }, + "Microsoft.Extensions.Caching.Abstractions/3.1.8": { + "sha512": "iBIdKjKa2nR4LdknV2JMSRpJVM5TOca25EckPm6SZQT6HfH8RoHrn9m14GUAkvzE+uOziXRoAwr8YIC6ZOpyXg==", + "type": "package", + "path": "microsoft.extensions.caching.abstractions/3.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml", + "microsoft.extensions.caching.abstractions.3.1.8.nupkg.sha512", + "microsoft.extensions.caching.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.Caching.Memory/3.1.8": { + "sha512": "u04q7+tgc8l6pQ5HOcr6scgapkQQHnrhpGoCaaAZd24R36/NxGsGxuhSmhHOrQx9CsBLe2CVBN/4CkLlxtnnXw==", + "type": "package", + "path": "microsoft.extensions.caching.memory/3.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml", + "microsoft.extensions.caching.memory.3.1.8.nupkg.sha512", + "microsoft.extensions.caching.memory.nuspec" + ] + }, + "Microsoft.Extensions.Configuration/3.1.8": { + "sha512": "xWvtu/ra8xDOy62ZXzQj1ElmmH3GpZBSKvw4LbfNXKCy+PaziS5Uh0gQ47D4H4w3u+PJfhNWCCGCp9ORNEzkRw==", + "type": "package", + "path": "microsoft.extensions.configuration/3.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", + "microsoft.extensions.configuration.3.1.8.nupkg.sha512", + "microsoft.extensions.configuration.nuspec" + ] + }, + "Microsoft.Extensions.Configuration.Abstractions/3.1.8": { + "sha512": "0qbNyxGpuNP/fuQ3FLHesm1Vn/83qYcAgVsi1UQCQN1peY4YH1uiizOh4xbYkQyxiVMD/c/zhiYYv94G0DXSSA==", + "type": "package", + "path": "microsoft.extensions.configuration.abstractions/3.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "microsoft.extensions.configuration.abstractions.3.1.8.nupkg.sha512", + "microsoft.extensions.configuration.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.Configuration.Binder/3.1.8": { + "sha512": "l/oqIWRM4YF62mlCOrIKGUOCemsaID/lngK2SZEtpYI8LrktpjPd4QzvENWj5GebbLbqOtsFhF6Ko6dgzmUnBw==", + "type": "package", + "path": "microsoft.extensions.configuration.binder/3.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml", + "microsoft.extensions.configuration.binder.3.1.8.nupkg.sha512", + "microsoft.extensions.configuration.binder.nuspec" + ] + }, + "Microsoft.Extensions.DependencyInjection/3.1.8": { + "sha512": "tUpYcVxFqwh8wVD8O+6A8gJnVtl6L4N1Vd9bLJgQSJ0gjBTUQ/eKwJn0LglkkaDU7GAxODDv4eexgZn3QSE0NQ==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection/3.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/net461/Microsoft.Extensions.DependencyInjection.dll", + "lib/net461/Microsoft.Extensions.DependencyInjection.xml", + "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", + "microsoft.extensions.dependencyinjection.3.1.8.nupkg.sha512", + "microsoft.extensions.dependencyinjection.nuspec" + ] + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/3.1.8": { + "sha512": "YP0kEBkSLTVl3znqZEux+xyJpz5iVNwFZf0OPS7nupdKbojSlO7Fa+JuQjLYpWfpAshaMcznu27tjWzfXRJnOA==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection.abstractions/3.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "microsoft.extensions.dependencyinjection.abstractions.3.1.8.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.Logging/3.1.8": { + "sha512": "Bch88WGwrgJUabSOiTbPgne/jkCcWTyP97db8GWzQH9RcGi6TThiRm8ggsD+OXBW2UBwAYx1Zb1ns1elsMiomQ==", + "type": "package", + "path": "microsoft.extensions.logging/3.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Logging.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", + "microsoft.extensions.logging.3.1.8.nupkg.sha512", + "microsoft.extensions.logging.nuspec" + ] + }, + "Microsoft.Extensions.Logging.Abstractions/3.1.8": { + "sha512": "LxQPR/KE4P9nx304VcFipWPcW8ZOZOGHuiYlG0ncAQJItogDzR9nyYUNvziLObx2MfX2Z9iCTdAqEtoImaQOYg==", + "type": "package", + "path": "microsoft.extensions.logging.abstractions/3.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", + "microsoft.extensions.logging.abstractions.3.1.8.nupkg.sha512", + "microsoft.extensions.logging.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.Options/3.1.8": { + "sha512": "mpkwjNg5sr1XHEJwVS8G1w6dsh5/72vQOOe4aqhg012j93m8OOmfyIBwoQN4SE0KRRS+fatdW3qqUrHbRwlWOA==", + "type": "package", + "path": "microsoft.extensions.options/3.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Options.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Options.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.xml", + "microsoft.extensions.options.3.1.8.nupkg.sha512", + "microsoft.extensions.options.nuspec" + ] + }, + "Microsoft.Extensions.Primitives/3.1.8": { + "sha512": "XcIoXQhT0kwnEhOKv/LmpWR6yF6QWmBTy9Fcsz4aHuCOgTJ7Zd23ELtUA4BfwlYoFlSedavS+vURz9tNekd44g==", + "type": "package", + "path": "microsoft.extensions.primitives/3.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.xml", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", + "microsoft.extensions.primitives.3.1.8.nupkg.sha512", + "microsoft.extensions.primitives.nuspec" + ] + }, + "Microsoft.NET.Test.Sdk/16.2.0": { + "sha512": "56w1drIQqpMgg3IxHcfra/jXOngiD4pbl0j6TNeJMlOQGlZ8wCMlyRTvn6Crd/FgGjwKbWLurdOHNGrfzLtl6A==", + "type": "package", + "path": "microsoft.net.test.sdk/16.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/net40/Microsoft.NET.Test.Sdk.props", + "build/net40/Microsoft.NET.Test.Sdk.targets", + "build/netcoreapp1.0/Microsoft.NET.Test.Sdk.Program.cs", + "build/netcoreapp1.0/Microsoft.NET.Test.Sdk.Program.fs", + "build/netcoreapp1.0/Microsoft.NET.Test.Sdk.Program.vb", + "build/netcoreapp1.0/Microsoft.NET.Test.Sdk.props", + "build/netcoreapp1.0/Microsoft.NET.Test.Sdk.targets", + "build/uap10.0/Microsoft.NET.Test.Sdk.props", + "buildMultiTargeting/Microsoft.NET.Test.Sdk.props", + "microsoft.net.test.sdk.16.2.0.nupkg.sha512", + "microsoft.net.test.sdk.nuspec" + ] + }, + "Microsoft.NETCore.Platforms/2.1.2": { + "sha512": "mOJy3M0UN+LUG21dLGMxaWZEP6xYpQEpLuvuEQBaownaX4YuhH6NmNUlN9si+vNkAS6dwJ//N1O4DmLf2CikVg==", + "type": "package", + "path": "microsoft.netcore.platforms/2.1.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/netstandard1.0/_._", + "microsoft.netcore.platforms.2.1.2.nupkg.sha512", + "microsoft.netcore.platforms.nuspec", + "runtime.json", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.NETCore.Targets/1.1.0": { + "sha512": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", + "type": "package", + "path": "microsoft.netcore.targets/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "microsoft.netcore.targets.1.1.0.nupkg.sha512", + "microsoft.netcore.targets.nuspec", + "runtime.json" + ] + }, + "Microsoft.TestPlatform.ObjectModel/16.2.0": { + "sha512": "RAyBf87uZ5XjRE953LlxqILpD1SqwQM6bXwxPUCAPPEy0uv12R+eKnFL7yaeLVHInMKkNNh1iD/cDOVDfSgllA==", + "type": "package", + "path": "microsoft.testplatform.objectmodel/16.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net451/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/net451/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/net451/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/net451/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net451/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net451/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net451/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net451/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net451/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net451/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net451/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net451/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net451/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net451/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net451/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net451/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net451/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net451/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net451/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net451/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net451/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net451/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net451/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net451/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net451/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net451/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net451/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net451/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net451/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard1.4/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/netstandard1.4/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/netstandard1.4/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/netstandard1.5/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/netstandard1.5/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/netstandard1.5/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/netstandard1.5/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard1.5/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard1.5/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard1.5/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard1.5/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard1.5/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard1.5/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard1.5/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard1.5/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard1.5/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard1.5/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard1.5/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard1.5/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard1.5/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard1.5/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard1.5/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard1.5/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard1.5/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard1.5/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard1.5/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard1.5/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard1.5/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard1.5/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "microsoft.testplatform.objectmodel.16.2.0.nupkg.sha512", + "microsoft.testplatform.objectmodel.nuspec" + ] + }, + "Microsoft.TestPlatform.TestHost/16.2.0": { + "sha512": "PogSQ40KgkZjEBdC6KBGpMtuvFFCIdoJAMmK7CAHWyTXCfN1cPN8j0TFJKh+LneSg+y0QQDP23STMF609KhHQw==", + "type": "package", + "path": "microsoft.testplatform.testhost/16.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "build/uap10.0/Microsoft.TestPlatform.TestHost.props", + "build/uap10.0/Microsoft.TestPlatform.TestHost.targets", + "build/uap10.0/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "build/uap10.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/uap10.0/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "build/uap10.0/cs/Microsoft.TestPlatform.Utilities.resources.dll", + "build/uap10.0/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "build/uap10.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/uap10.0/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "build/uap10.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/uap10.0/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "build/uap10.0/de/Microsoft.TestPlatform.Utilities.resources.dll", + "build/uap10.0/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "build/uap10.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/uap10.0/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "build/uap10.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/uap10.0/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "build/uap10.0/es/Microsoft.TestPlatform.Utilities.resources.dll", + "build/uap10.0/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "build/uap10.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/uap10.0/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "build/uap10.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/uap10.0/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "build/uap10.0/fr/Microsoft.TestPlatform.Utilities.resources.dll", + "build/uap10.0/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "build/uap10.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/uap10.0/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "build/uap10.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/uap10.0/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "build/uap10.0/it/Microsoft.TestPlatform.Utilities.resources.dll", + "build/uap10.0/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "build/uap10.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/uap10.0/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "build/uap10.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/uap10.0/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "build/uap10.0/ja/Microsoft.TestPlatform.Utilities.resources.dll", + "build/uap10.0/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "build/uap10.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/uap10.0/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "build/uap10.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/uap10.0/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "build/uap10.0/ko/Microsoft.TestPlatform.Utilities.resources.dll", + "build/uap10.0/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "build/uap10.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/uap10.0/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "build/uap10.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/uap10.0/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "build/uap10.0/pl/Microsoft.TestPlatform.Utilities.resources.dll", + "build/uap10.0/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "build/uap10.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/uap10.0/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "build/uap10.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/uap10.0/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "build/uap10.0/pt-BR/Microsoft.TestPlatform.Utilities.resources.dll", + "build/uap10.0/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "build/uap10.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/uap10.0/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "build/uap10.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/uap10.0/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "build/uap10.0/ru/Microsoft.TestPlatform.Utilities.resources.dll", + "build/uap10.0/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "build/uap10.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/uap10.0/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "build/uap10.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/uap10.0/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "build/uap10.0/tr/Microsoft.TestPlatform.Utilities.resources.dll", + "build/uap10.0/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "build/uap10.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/uap10.0/x64/msdia140.dll", + "build/uap10.0/x86/msdia140.dll", + "build/uap10.0/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "build/uap10.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/uap10.0/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "build/uap10.0/zh-Hans/Microsoft.TestPlatform.Utilities.resources.dll", + "build/uap10.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "build/uap10.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/uap10.0/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "build/uap10.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/uap10.0/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "build/uap10.0/zh-Hant/Microsoft.TestPlatform.Utilities.resources.dll", + "build/uap10.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "build/uap10.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net45/_._", + "lib/netstandard1.5/Microsoft.TestPlatform.CommunicationUtilities.dll", + "lib/netstandard1.5/Microsoft.TestPlatform.CrossPlatEngine.dll", + "lib/netstandard1.5/Microsoft.TestPlatform.Utilities.dll", + "lib/netstandard1.5/Microsoft.VisualStudio.TestPlatform.Common.dll", + "lib/netstandard1.5/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netstandard1.5/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netstandard1.5/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netstandard1.5/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netstandard1.5/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netstandard1.5/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netstandard1.5/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netstandard1.5/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netstandard1.5/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netstandard1.5/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netstandard1.5/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netstandard1.5/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netstandard1.5/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netstandard1.5/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netstandard1.5/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netstandard1.5/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netstandard1.5/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netstandard1.5/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netstandard1.5/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netstandard1.5/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netstandard1.5/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netstandard1.5/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netstandard1.5/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netstandard1.5/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netstandard1.5/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netstandard1.5/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netstandard1.5/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netstandard1.5/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netstandard1.5/testhost.deps.json", + "lib/netstandard1.5/testhost.dll", + "lib/netstandard1.5/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netstandard1.5/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netstandard1.5/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netstandard1.5/x64/msdia140.dll", + "lib/netstandard1.5/x86/msdia140.dll", + "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netstandard1.5/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netstandard1.5/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/uap10.0/Microsoft.TestPlatform.CommunicationUtilities.dll", + "lib/uap10.0/Microsoft.TestPlatform.CrossPlatEngine.dll", + "lib/uap10.0/Microsoft.TestPlatform.Utilities.dll", + "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.Common.dll", + "lib/uap10.0/testhost.dll", + "microsoft.testplatform.testhost.16.2.0.nupkg.sha512", + "microsoft.testplatform.testhost.nuspec" + ] + }, + "Microsoft.Win32.Primitives/4.3.0": { + "sha512": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", + "type": "package", + "path": "microsoft.win32.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/Microsoft.Win32.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.win32.primitives.4.3.0.nupkg.sha512", + "microsoft.win32.primitives.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/Microsoft.Win32.Primitives.dll", + "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", + "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "Microsoft.Win32.Registry/4.0.0": { + "sha512": "q+eLtROUAQ3OxYA5mpQrgyFgzLQxIyrfT2eLpYX5IEPlHmIio2nh4F5bgOaQoGOV865kFKZZso9Oq9RlazvXtg==", + "type": "package", + "path": "microsoft.win32.registry/4.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/Microsoft.Win32.Registry.dll", + "microsoft.win32.registry.4.0.0.nupkg.sha512", + "microsoft.win32.registry.nuspec", + "ref/net46/Microsoft.Win32.Registry.dll", + "ref/netstandard1.3/Microsoft.Win32.Registry.dll", + "ref/netstandard1.3/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/de/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/es/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/it/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml", + "runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll", + "runtimes/win/lib/net46/Microsoft.Win32.Registry.dll", + "runtimes/win/lib/netcore50/_._", + "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll" + ] + }, + "MongoDB.Bson/2.11.2": { + "sha512": "7vJoaUKPPnW6Ej0r4UHV8DeYD0/SKk/73WlDfc5JMRJRjTj3jRUtGIXwpaFYq3wT8MRHmLwbM/KvkEAb7deHRw==", + "type": "package", + "path": "mongodb.bson/2.11.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "License.txt", + "lib/net452/MongoDB.Bson.dll", + "lib/net452/MongoDB.Bson.xml", + "lib/netstandard1.5/MongoDB.Bson.dll", + "lib/netstandard1.5/MongoDB.Bson.xml", + "lib/netstandard2.0/MongoDB.Bson.dll", + "lib/netstandard2.0/MongoDB.Bson.xml", + "mongodb.bson.2.11.2.nupkg.sha512", + "mongodb.bson.nuspec", + "packageIcon.png" + ] + }, + "MongoDB.Driver/2.11.2": { + "sha512": "4DT/VcE/6sw73tInWmQ1C92p1kHgKiuRx/DgYRtaUUILRaAdL8X1Gl3f8FXNMwH2rzH+KhOYCliYK7/+XWWZIw==", + "type": "package", + "path": "mongodb.driver/2.11.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "License.txt", + "lib/net452/MongoDB.Driver.dll", + "lib/net452/MongoDB.Driver.xml", + "lib/netstandard1.5/MongoDB.Driver.dll", + "lib/netstandard1.5/MongoDB.Driver.xml", + "lib/netstandard2.0/MongoDB.Driver.dll", + "lib/netstandard2.0/MongoDB.Driver.xml", + "mongodb.driver.2.11.2.nupkg.sha512", + "mongodb.driver.nuspec", + "packageIcon.png" + ] + }, + "MongoDB.Driver.Core/2.11.2": { + "sha512": "e5/q9bqGEfGSsAq9Gn6+qWKEPs0s/U41tgfcWNtwAEpyg/btWO4RkeV0Jv8tG/KaXey1E151npmDPcwTrg7qjQ==", + "type": "package", + "path": "mongodb.driver.core/2.11.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "License.txt", + "THIRD-PARTY-NOTICES", + "build/MongoDB.Driver.Core.targets", + "content/Core/Compression/Snappy/lib/win/snappy32.dll", + "content/Core/Compression/Snappy/lib/win/snappy64.dll", + "content/Core/Compression/Zstandard/lib/win/libzstd.dll", + "contentFiles/any/net452/Core/Compression/Snappy/lib/win/snappy32.dll", + "contentFiles/any/net452/Core/Compression/Snappy/lib/win/snappy64.dll", + "contentFiles/any/net452/Core/Compression/Zstandard/lib/win/libzstd.dll", + "contentFiles/any/netstandard1.5/Core/Compression/Snappy/lib/win/snappy32.dll", + "contentFiles/any/netstandard1.5/Core/Compression/Snappy/lib/win/snappy64.dll", + "contentFiles/any/netstandard1.5/Core/Compression/Zstandard/lib/win/libzstd.dll", + "contentFiles/any/netstandard2.0/Core/Compression/Snappy/lib/win/snappy32.dll", + "contentFiles/any/netstandard2.0/Core/Compression/Snappy/lib/win/snappy64.dll", + "contentFiles/any/netstandard2.0/Core/Compression/Zstandard/lib/win/libzstd.dll", + "lib/net452/MongoDB.Driver.Core.dll", + "lib/net452/MongoDB.Driver.Core.xml", + "lib/netstandard1.5/MongoDB.Driver.Core.dll", + "lib/netstandard1.5/MongoDB.Driver.Core.xml", + "lib/netstandard2.0/MongoDB.Driver.Core.dll", + "lib/netstandard2.0/MongoDB.Driver.Core.xml", + "mongodb.driver.core.2.11.2.nupkg.sha512", + "mongodb.driver.core.nuspec", + "packageIcon.png", + "runtimes/win/native/libzstd.dll", + "runtimes/win/native/snappy32.dll", + "runtimes/win/native/snappy64.dll" + ] + }, + "MongoDB.Libmongocrypt/1.0.0": { + "sha512": "zkcsra5riDiKXqOiCKskycakpbO5RYkuUWG+z2AZML3A4NShvAs/D3InwkxH0OcbjZQOWo763Hjdmhr0AaylcA==", + "type": "package", + "path": "mongodb.libmongocrypt/1.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "License.txt", + "build/MongoDB.Libmongocrypt.targets", + "lib/net452/MongoDB.Libmongocrypt.dll", + "lib/netstandard1.5/MongoDB.Libmongocrypt.dll", + "mongodb.libmongocrypt.1.0.0.nupkg.sha512", + "mongodb.libmongocrypt.nuspec", + "x64/native/windows/mongocrypt.dll" + ] + }, + "Moq/4.14.6": { + "sha512": "o0SH3WvqGmBSePHlHgX3TkRorqw5cqUJUCnBMJyeIIGxLT7/J6cK8YddD35qB+PeALtYpJ48894m5iiAZ0kxDA==", + "type": "package", + "path": "moq/4.14.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net45/Moq.dll", + "lib/net45/Moq.xml", + "lib/netstandard2.0/Moq.dll", + "lib/netstandard2.0/Moq.xml", + "moq.4.14.6.nupkg.sha512", + "moq.nuspec" + ] + }, + "MSTest.TestAdapter/2.0.0": { + "sha512": "VoXDhx+a/44RmQYpkrYWe3D6AP6kjqibe02NOj1t8Zn9uo8e90gXW22SYj3geEwNTcEdMg2XMq0SI2P0Fl2Trw==", + "type": "package", + "path": "mstest.testadapter/2.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.txt", + "build/_common/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll", + "build/_common/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.Interface.dll", + "build/_common/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/_common/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "build/_common/cs/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_common/cs/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_common/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_common/de/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_common/de/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_common/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_common/es/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_common/es/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_common/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_common/fr/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_common/fr/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_common/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_common/it/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_common/it/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_common/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_common/ja/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_common/ja/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_common/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_common/ko/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_common/ko/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_common/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_common/pl/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_common/pl/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_common/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_common/pt/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_common/pt/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_common/pt/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_common/ru/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_common/ru/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_common/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_common/tr/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_common/tr/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_common/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_common/zh-Hans/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_common/zh-Hans/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_common/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_common/zh-Hant/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_common/zh-Hant/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_common/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/net45/MSTest.TestAdapter.props", + "build/net45/MSTest.TestAdapter.targets", + "build/netcoreapp1.0/MSTest.TestAdapter.props", + "build/netcoreapp1.0/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/uap10.0/MSTest.TestAdapter.props", + "build/uap10.0/MSTest.TestAdapter.targets", + "build/uap10.0/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "mstest.testadapter.2.0.0.nupkg.sha512", + "mstest.testadapter.nuspec" + ] + }, + "MSTest.TestFramework/2.0.0": { + "sha512": "gDlwhzIqdhUB+tirA80c6jUnlAsWBl2RXsKwmCbeZ1XkTjufrZIrBs7cvBdxbzddAEFOZuqfeCHJK/rp0vloZg==", + "type": "package", + "path": "mstest.testframework/2.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.txt", + "lib/net45/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.XML", + "lib/net45/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "lib/net45/Microsoft.VisualStudio.TestPlatform.TestFramework.XML", + "lib/net45/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/net45/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net45/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net45/de/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net45/de/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net45/es/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net45/es/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net45/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net45/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net45/it/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net45/it/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net45/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net45/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net45/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net45/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net45/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net45/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net45/pt/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net45/pt/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net45/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net45/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net45/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net45/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net45/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net45/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net45/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net45/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.XML", + "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.XML", + "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/netstandard1.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard1.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard1.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard1.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard1.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard1.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard1.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard1.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard1.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard1.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard1.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard1.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard1.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard1.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard1.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard1.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard1.0/pt/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard1.0/pt/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard1.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard1.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard1.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard1.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard1.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard1.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard1.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard1.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.XML", + "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.XML", + "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/uap10.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/pt/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/pt/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "mstest.testframework.2.0.0.nupkg.sha512", + "mstest.testframework.nuspec" + ] + }, + "NETStandard.Library/1.6.1": { + "sha512": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==", + "type": "package", + "path": "netstandard.library/1.6.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "netstandard.library.1.6.1.nupkg.sha512", + "netstandard.library.nuspec" + ] + }, + "Newtonsoft.Json/12.0.3": { + "sha512": "6mgjfnRB4jKMlzHSl+VD+oUc1IebOZabkbyWj2RiTgWwYPPuaK1H97G1sHqGwPlS5npiF5Q0OrxN1wni2n5QWg==", + "type": "package", + "path": "newtonsoft.json/12.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.md", + "lib/net20/Newtonsoft.Json.dll", + "lib/net20/Newtonsoft.Json.xml", + "lib/net35/Newtonsoft.Json.dll", + "lib/net35/Newtonsoft.Json.xml", + "lib/net40/Newtonsoft.Json.dll", + "lib/net40/Newtonsoft.Json.xml", + "lib/net45/Newtonsoft.Json.dll", + "lib/net45/Newtonsoft.Json.xml", + "lib/netstandard1.0/Newtonsoft.Json.dll", + "lib/netstandard1.0/Newtonsoft.Json.xml", + "lib/netstandard1.3/Newtonsoft.Json.dll", + "lib/netstandard1.3/Newtonsoft.Json.xml", + "lib/netstandard2.0/Newtonsoft.Json.dll", + "lib/netstandard2.0/Newtonsoft.Json.xml", + "lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.dll", + "lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.xml", + "lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.dll", + "lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.xml", + "newtonsoft.json.12.0.3.nupkg.sha512", + "newtonsoft.json.nuspec", + "packageIcon.png" + ] + }, + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==", + "type": "package", + "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==", + "type": "package", + "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==", + "type": "package", + "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.native.System/4.3.0": { + "sha512": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", + "type": "package", + "path": "runtime.native.system/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.4.3.0.nupkg.sha512", + "runtime.native.system.nuspec" + ] + }, + "runtime.native.System.IO.Compression/4.3.0": { + "sha512": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==", + "type": "package", + "path": "runtime.native.system.io.compression/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.io.compression.4.3.0.nupkg.sha512", + "runtime.native.system.io.compression.nuspec" + ] + }, + "runtime.native.System.Net.Http/4.3.0": { + "sha512": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", + "type": "package", + "path": "runtime.native.system.net.http/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.net.http.4.3.0.nupkg.sha512", + "runtime.native.system.net.http.nuspec" + ] + }, + "runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "sha512": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", + "type": "package", + "path": "runtime.native.system.security.cryptography.apple/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", + "runtime.native.system.security.cryptography.apple.nuspec" + ] + }, + "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==", + "type": "package", + "path": "runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.native.system.security.cryptography.openssl.nuspec" + ] + }, + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==", + "type": "package", + "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==", + "type": "package", + "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "sha512": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==", + "type": "package", + "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.nuspec", + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib" + ] + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==", + "type": "package", + "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib" + ] + }, + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==", + "type": "package", + "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==", + "type": "package", + "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==", + "type": "package", + "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==", + "type": "package", + "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "SharpCompress/0.23.0": { + "sha512": "HBbT47JHvNrsZX2dTBzUBOSzBt+EmIRGLIBkbxcP6Jef7DB4eFWQX5iHWV3Nj7hABFPCjISrZ8s0z72nF2zFHQ==", + "type": "package", + "path": "sharpcompress/0.23.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net35/SharpCompress.dll", + "lib/net45/SharpCompress.dll", + "lib/netstandard1.0/SharpCompress.dll", + "lib/netstandard1.3/SharpCompress.dll", + "lib/netstandard2.0/SharpCompress.dll", + "sharpcompress.0.23.0.nupkg.sha512", + "sharpcompress.nuspec" + ] + }, + "System.AppContext/4.3.0": { + "sha512": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==", + "type": "package", + "path": "system.appcontext/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.AppContext.dll", + "lib/net463/System.AppContext.dll", + "lib/netcore50/System.AppContext.dll", + "lib/netstandard1.6/System.AppContext.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.AppContext.dll", + "ref/net463/System.AppContext.dll", + "ref/netstandard/_._", + "ref/netstandard1.3/System.AppContext.dll", + "ref/netstandard1.3/System.AppContext.xml", + "ref/netstandard1.3/de/System.AppContext.xml", + "ref/netstandard1.3/es/System.AppContext.xml", + "ref/netstandard1.3/fr/System.AppContext.xml", + "ref/netstandard1.3/it/System.AppContext.xml", + "ref/netstandard1.3/ja/System.AppContext.xml", + "ref/netstandard1.3/ko/System.AppContext.xml", + "ref/netstandard1.3/ru/System.AppContext.xml", + "ref/netstandard1.3/zh-hans/System.AppContext.xml", + "ref/netstandard1.3/zh-hant/System.AppContext.xml", + "ref/netstandard1.6/System.AppContext.dll", + "ref/netstandard1.6/System.AppContext.xml", + "ref/netstandard1.6/de/System.AppContext.xml", + "ref/netstandard1.6/es/System.AppContext.xml", + "ref/netstandard1.6/fr/System.AppContext.xml", + "ref/netstandard1.6/it/System.AppContext.xml", + "ref/netstandard1.6/ja/System.AppContext.xml", + "ref/netstandard1.6/ko/System.AppContext.xml", + "ref/netstandard1.6/ru/System.AppContext.xml", + "ref/netstandard1.6/zh-hans/System.AppContext.xml", + "ref/netstandard1.6/zh-hant/System.AppContext.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.AppContext.dll", + "system.appcontext.4.3.0.nupkg.sha512", + "system.appcontext.nuspec" + ] + }, + "System.Buffers/4.4.0": { + "sha512": "AwarXzzoDwX6BgrhjoJsk6tUezZEozOT5Y9QKF94Gl4JK91I4PIIBkBco9068Y9/Dra8Dkbie99kXB8+1BaYKw==", + "type": "package", + "path": "system.buffers/4.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.1/System.Buffers.dll", + "lib/netstandard1.1/System.Buffers.xml", + "lib/netstandard2.0/System.Buffers.dll", + "lib/netstandard2.0/System.Buffers.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.1/System.Buffers.dll", + "ref/netstandard1.1/System.Buffers.xml", + "ref/netstandard2.0/System.Buffers.dll", + "ref/netstandard2.0/System.Buffers.xml", + "system.buffers.4.4.0.nupkg.sha512", + "system.buffers.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Collections/4.3.0": { + "sha512": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "type": "package", + "path": "system.collections/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.dll", + "ref/netcore50/System.Collections.xml", + "ref/netcore50/de/System.Collections.xml", + "ref/netcore50/es/System.Collections.xml", + "ref/netcore50/fr/System.Collections.xml", + "ref/netcore50/it/System.Collections.xml", + "ref/netcore50/ja/System.Collections.xml", + "ref/netcore50/ko/System.Collections.xml", + "ref/netcore50/ru/System.Collections.xml", + "ref/netcore50/zh-hans/System.Collections.xml", + "ref/netcore50/zh-hant/System.Collections.xml", + "ref/netstandard1.0/System.Collections.dll", + "ref/netstandard1.0/System.Collections.xml", + "ref/netstandard1.0/de/System.Collections.xml", + "ref/netstandard1.0/es/System.Collections.xml", + "ref/netstandard1.0/fr/System.Collections.xml", + "ref/netstandard1.0/it/System.Collections.xml", + "ref/netstandard1.0/ja/System.Collections.xml", + "ref/netstandard1.0/ko/System.Collections.xml", + "ref/netstandard1.0/ru/System.Collections.xml", + "ref/netstandard1.0/zh-hans/System.Collections.xml", + "ref/netstandard1.0/zh-hant/System.Collections.xml", + "ref/netstandard1.3/System.Collections.dll", + "ref/netstandard1.3/System.Collections.xml", + "ref/netstandard1.3/de/System.Collections.xml", + "ref/netstandard1.3/es/System.Collections.xml", + "ref/netstandard1.3/fr/System.Collections.xml", + "ref/netstandard1.3/it/System.Collections.xml", + "ref/netstandard1.3/ja/System.Collections.xml", + "ref/netstandard1.3/ko/System.Collections.xml", + "ref/netstandard1.3/ru/System.Collections.xml", + "ref/netstandard1.3/zh-hans/System.Collections.xml", + "ref/netstandard1.3/zh-hant/System.Collections.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.4.3.0.nupkg.sha512", + "system.collections.nuspec" + ] + }, + "System.Collections.Concurrent/4.3.0": { + "sha512": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "type": "package", + "path": "system.collections.concurrent/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Collections.Concurrent.dll", + "lib/netstandard1.3/System.Collections.Concurrent.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.Concurrent.dll", + "ref/netcore50/System.Collections.Concurrent.xml", + "ref/netcore50/de/System.Collections.Concurrent.xml", + "ref/netcore50/es/System.Collections.Concurrent.xml", + "ref/netcore50/fr/System.Collections.Concurrent.xml", + "ref/netcore50/it/System.Collections.Concurrent.xml", + "ref/netcore50/ja/System.Collections.Concurrent.xml", + "ref/netcore50/ko/System.Collections.Concurrent.xml", + "ref/netcore50/ru/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.1/System.Collections.Concurrent.dll", + "ref/netstandard1.1/System.Collections.Concurrent.xml", + "ref/netstandard1.1/de/System.Collections.Concurrent.xml", + "ref/netstandard1.1/es/System.Collections.Concurrent.xml", + "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.1/it/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.3/System.Collections.Concurrent.dll", + "ref/netstandard1.3/System.Collections.Concurrent.xml", + "ref/netstandard1.3/de/System.Collections.Concurrent.xml", + "ref/netstandard1.3/es/System.Collections.Concurrent.xml", + "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.3/it/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.concurrent.4.3.0.nupkg.sha512", + "system.collections.concurrent.nuspec" + ] + }, + "System.Collections.Immutable/1.7.1": { + "sha512": "B43Zsz5EfMwyEbnObwRxW5u85fzJma3lrDeGcSAV1qkhSRTNY5uXAByTn9h9ddNdhM+4/YoLc/CI43umjwIl9Q==", + "type": "package", + "path": "system.collections.immutable/1.7.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.Collections.Immutable.dll", + "lib/net461/System.Collections.Immutable.xml", + "lib/netstandard1.0/System.Collections.Immutable.dll", + "lib/netstandard1.0/System.Collections.Immutable.xml", + "lib/netstandard1.3/System.Collections.Immutable.dll", + "lib/netstandard1.3/System.Collections.Immutable.xml", + "lib/netstandard2.0/System.Collections.Immutable.dll", + "lib/netstandard2.0/System.Collections.Immutable.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml", + "system.collections.immutable.1.7.1.nupkg.sha512", + "system.collections.immutable.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Collections.NonGeneric/4.3.0": { + "sha512": "prtjIEMhGUnQq6RnPEYLpFt8AtLbp9yq2zxOSrY7KJJZrw25Fi97IzBqY7iqssbM61Ek5b8f3MG/sG1N2sN5KA==", + "type": "package", + "path": "system.collections.nongeneric/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Collections.NonGeneric.dll", + "lib/netstandard1.3/System.Collections.NonGeneric.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Collections.NonGeneric.dll", + "ref/netstandard1.3/System.Collections.NonGeneric.dll", + "ref/netstandard1.3/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/de/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/es/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/fr/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/it/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/ja/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/ko/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/ru/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/zh-hans/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/zh-hant/System.Collections.NonGeneric.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.nongeneric.4.3.0.nupkg.sha512", + "system.collections.nongeneric.nuspec" + ] + }, + "System.Collections.Specialized/4.3.0": { + "sha512": "Epx8PoVZR0iuOnJJDzp7pWvdfMMOAvpUo95pC4ScH2mJuXkKA2Y4aR3cG9qt2klHgSons1WFh4kcGW7cSXvrxg==", + "type": "package", + "path": "system.collections.specialized/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Collections.Specialized.dll", + "lib/netstandard1.3/System.Collections.Specialized.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Collections.Specialized.dll", + "ref/netstandard1.3/System.Collections.Specialized.dll", + "ref/netstandard1.3/System.Collections.Specialized.xml", + "ref/netstandard1.3/de/System.Collections.Specialized.xml", + "ref/netstandard1.3/es/System.Collections.Specialized.xml", + "ref/netstandard1.3/fr/System.Collections.Specialized.xml", + "ref/netstandard1.3/it/System.Collections.Specialized.xml", + "ref/netstandard1.3/ja/System.Collections.Specialized.xml", + "ref/netstandard1.3/ko/System.Collections.Specialized.xml", + "ref/netstandard1.3/ru/System.Collections.Specialized.xml", + "ref/netstandard1.3/zh-hans/System.Collections.Specialized.xml", + "ref/netstandard1.3/zh-hant/System.Collections.Specialized.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.specialized.4.3.0.nupkg.sha512", + "system.collections.specialized.nuspec" + ] + }, + "System.ComponentModel/4.3.0": { + "sha512": "VyGn1jGRZVfxnh8EdvDCi71v3bMXrsu8aYJOwoV7SNDLVhiEqwP86pPMyRGsDsxhXAm2b3o9OIqeETfN5qfezw==", + "type": "package", + "path": "system.componentmodel/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.ComponentModel.dll", + "lib/netstandard1.3/System.ComponentModel.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.ComponentModel.dll", + "ref/netcore50/System.ComponentModel.xml", + "ref/netcore50/de/System.ComponentModel.xml", + "ref/netcore50/es/System.ComponentModel.xml", + "ref/netcore50/fr/System.ComponentModel.xml", + "ref/netcore50/it/System.ComponentModel.xml", + "ref/netcore50/ja/System.ComponentModel.xml", + "ref/netcore50/ko/System.ComponentModel.xml", + "ref/netcore50/ru/System.ComponentModel.xml", + "ref/netcore50/zh-hans/System.ComponentModel.xml", + "ref/netcore50/zh-hant/System.ComponentModel.xml", + "ref/netstandard1.0/System.ComponentModel.dll", + "ref/netstandard1.0/System.ComponentModel.xml", + "ref/netstandard1.0/de/System.ComponentModel.xml", + "ref/netstandard1.0/es/System.ComponentModel.xml", + "ref/netstandard1.0/fr/System.ComponentModel.xml", + "ref/netstandard1.0/it/System.ComponentModel.xml", + "ref/netstandard1.0/ja/System.ComponentModel.xml", + "ref/netstandard1.0/ko/System.ComponentModel.xml", + "ref/netstandard1.0/ru/System.ComponentModel.xml", + "ref/netstandard1.0/zh-hans/System.ComponentModel.xml", + "ref/netstandard1.0/zh-hant/System.ComponentModel.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.componentmodel.4.3.0.nupkg.sha512", + "system.componentmodel.nuspec" + ] + }, + "System.ComponentModel.Annotations/4.7.0": { + "sha512": "0YFqjhp/mYkDGpU0Ye1GjE53HMp9UVfGN7seGpAMttAC0C40v5gw598jCgpbBLMmCo0E5YRLBv5Z2doypO49ZQ==", + "type": "package", + "path": "system.componentmodel.annotations/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net461/System.ComponentModel.Annotations.dll", + "lib/netcore50/System.ComponentModel.Annotations.dll", + "lib/netstandard1.4/System.ComponentModel.Annotations.dll", + "lib/netstandard2.0/System.ComponentModel.Annotations.dll", + "lib/netstandard2.1/System.ComponentModel.Annotations.dll", + "lib/netstandard2.1/System.ComponentModel.Annotations.xml", + "lib/portable-net45+win8/_._", + "lib/win8/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net461/System.ComponentModel.Annotations.dll", + "ref/net461/System.ComponentModel.Annotations.xml", + "ref/netcore50/System.ComponentModel.Annotations.dll", + "ref/netcore50/System.ComponentModel.Annotations.xml", + "ref/netcore50/de/System.ComponentModel.Annotations.xml", + "ref/netcore50/es/System.ComponentModel.Annotations.xml", + "ref/netcore50/fr/System.ComponentModel.Annotations.xml", + "ref/netcore50/it/System.ComponentModel.Annotations.xml", + "ref/netcore50/ja/System.ComponentModel.Annotations.xml", + "ref/netcore50/ko/System.ComponentModel.Annotations.xml", + "ref/netcore50/ru/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/System.ComponentModel.Annotations.dll", + "ref/netstandard1.1/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/System.ComponentModel.Annotations.dll", + "ref/netstandard1.3/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/System.ComponentModel.Annotations.dll", + "ref/netstandard1.4/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard2.0/System.ComponentModel.Annotations.dll", + "ref/netstandard2.0/System.ComponentModel.Annotations.xml", + "ref/netstandard2.1/System.ComponentModel.Annotations.dll", + "ref/netstandard2.1/System.ComponentModel.Annotations.xml", + "ref/portable-net45+win8/_._", + "ref/win8/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.componentmodel.annotations.4.7.0.nupkg.sha512", + "system.componentmodel.annotations.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.ComponentModel.EventBasedAsync/4.0.11": { + "sha512": "Z7SO6vvQIR84daPE4uhaNdef9CjgjDMGYkas8epUhf0U3WGuaGgZ0Mm4QuNycMdbHUY8KEdZrtgxonkAiJaAlA==", + "type": "package", + "path": "system.componentmodel.eventbasedasync/4.0.11", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.ComponentModel.EventBasedAsync.dll", + "lib/netstandard1.3/System.ComponentModel.EventBasedAsync.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.ComponentModel.EventBasedAsync.dll", + "ref/netcore50/System.ComponentModel.EventBasedAsync.xml", + "ref/netcore50/de/System.ComponentModel.EventBasedAsync.xml", + "ref/netcore50/es/System.ComponentModel.EventBasedAsync.xml", + "ref/netcore50/fr/System.ComponentModel.EventBasedAsync.xml", + "ref/netcore50/it/System.ComponentModel.EventBasedAsync.xml", + "ref/netcore50/ja/System.ComponentModel.EventBasedAsync.xml", + "ref/netcore50/ko/System.ComponentModel.EventBasedAsync.xml", + "ref/netcore50/ru/System.ComponentModel.EventBasedAsync.xml", + "ref/netcore50/zh-hans/System.ComponentModel.EventBasedAsync.xml", + "ref/netcore50/zh-hant/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.0/System.ComponentModel.EventBasedAsync.dll", + "ref/netstandard1.0/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.0/de/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.0/es/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.0/fr/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.0/it/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.0/ja/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.0/ko/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.0/ru/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.0/zh-hans/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.0/zh-hant/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.3/System.ComponentModel.EventBasedAsync.dll", + "ref/netstandard1.3/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.3/de/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.3/es/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.3/fr/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.3/it/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.3/ja/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.3/ko/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.3/ru/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.3/zh-hans/System.ComponentModel.EventBasedAsync.xml", + "ref/netstandard1.3/zh-hant/System.ComponentModel.EventBasedAsync.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.componentmodel.eventbasedasync.4.0.11.nupkg.sha512", + "system.componentmodel.eventbasedasync.nuspec" + ] + }, + "System.ComponentModel.Primitives/4.3.0": { + "sha512": "j8GUkCpM8V4d4vhLIIoBLGey2Z5bCkMVNjEZseyAlm4n5arcsJOeI3zkUP+zvZgzsbLTYh4lYeP/ZD/gdIAPrw==", + "type": "package", + "path": "system.componentmodel.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/System.ComponentModel.Primitives.dll", + "lib/netstandard1.0/System.ComponentModel.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/System.ComponentModel.Primitives.dll", + "ref/netstandard1.0/System.ComponentModel.Primitives.dll", + "ref/netstandard1.0/System.ComponentModel.Primitives.xml", + "ref/netstandard1.0/de/System.ComponentModel.Primitives.xml", + "ref/netstandard1.0/es/System.ComponentModel.Primitives.xml", + "ref/netstandard1.0/fr/System.ComponentModel.Primitives.xml", + "ref/netstandard1.0/it/System.ComponentModel.Primitives.xml", + "ref/netstandard1.0/ja/System.ComponentModel.Primitives.xml", + "ref/netstandard1.0/ko/System.ComponentModel.Primitives.xml", + "ref/netstandard1.0/ru/System.ComponentModel.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.ComponentModel.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.ComponentModel.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.componentmodel.primitives.4.3.0.nupkg.sha512", + "system.componentmodel.primitives.nuspec" + ] + }, + "System.ComponentModel.TypeConverter/4.3.0": { + "sha512": "16pQ6P+EdhcXzPiEK4kbA953Fu0MNG2ovxTZU81/qsCd1zPRsKc3uif5NgvllCY598k6bI0KUyKW8fanlfaDQg==", + "type": "package", + "path": "system.componentmodel.typeconverter/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/System.ComponentModel.TypeConverter.dll", + "lib/net462/System.ComponentModel.TypeConverter.dll", + "lib/netstandard1.0/System.ComponentModel.TypeConverter.dll", + "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/System.ComponentModel.TypeConverter.dll", + "ref/net462/System.ComponentModel.TypeConverter.dll", + "ref/netstandard1.0/System.ComponentModel.TypeConverter.dll", + "ref/netstandard1.0/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.0/de/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.0/es/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.0/fr/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.0/it/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.0/ja/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.0/ko/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.0/ru/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.0/zh-hans/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.0/zh-hant/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.5/System.ComponentModel.TypeConverter.dll", + "ref/netstandard1.5/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.5/de/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.5/es/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.5/fr/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.5/it/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.5/ja/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.5/ko/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.5/ru/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.5/zh-hans/System.ComponentModel.TypeConverter.xml", + "ref/netstandard1.5/zh-hant/System.ComponentModel.TypeConverter.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.componentmodel.typeconverter.4.3.0.nupkg.sha512", + "system.componentmodel.typeconverter.nuspec" + ] + }, + "System.Console/4.3.0": { + "sha512": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", + "type": "package", + "path": "system.console/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Console.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Console.dll", + "ref/netstandard1.3/System.Console.dll", + "ref/netstandard1.3/System.Console.xml", + "ref/netstandard1.3/de/System.Console.xml", + "ref/netstandard1.3/es/System.Console.xml", + "ref/netstandard1.3/fr/System.Console.xml", + "ref/netstandard1.3/it/System.Console.xml", + "ref/netstandard1.3/ja/System.Console.xml", + "ref/netstandard1.3/ko/System.Console.xml", + "ref/netstandard1.3/ru/System.Console.xml", + "ref/netstandard1.3/zh-hans/System.Console.xml", + "ref/netstandard1.3/zh-hant/System.Console.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.console.4.3.0.nupkg.sha512", + "system.console.nuspec" + ] + }, + "System.Diagnostics.Debug/4.3.0": { + "sha512": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "type": "package", + "path": "system.diagnostics.debug/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Debug.dll", + "ref/netcore50/System.Diagnostics.Debug.xml", + "ref/netcore50/de/System.Diagnostics.Debug.xml", + "ref/netcore50/es/System.Diagnostics.Debug.xml", + "ref/netcore50/fr/System.Diagnostics.Debug.xml", + "ref/netcore50/it/System.Diagnostics.Debug.xml", + "ref/netcore50/ja/System.Diagnostics.Debug.xml", + "ref/netcore50/ko/System.Diagnostics.Debug.xml", + "ref/netcore50/ru/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/System.Diagnostics.Debug.dll", + "ref/netstandard1.0/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/System.Diagnostics.Debug.dll", + "ref/netstandard1.3/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.debug.4.3.0.nupkg.sha512", + "system.diagnostics.debug.nuspec" + ] + }, + "System.Diagnostics.DiagnosticSource/4.7.1": { + "sha512": "j81Lovt90PDAq8kLpaJfJKV/rWdWuEk6jfV+MBkee33vzYLEUsy4gXK8laa9V2nZlLM9VM9yA/OOQxxPEJKAMw==", + "type": "package", + "path": "system.diagnostics.diagnosticsource/4.7.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net45/System.Diagnostics.DiagnosticSource.dll", + "lib/net45/System.Diagnostics.DiagnosticSource.xml", + "lib/net46/System.Diagnostics.DiagnosticSource.dll", + "lib/net46/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", + "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", + "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml", + "system.diagnostics.diagnosticsource.4.7.1.nupkg.sha512", + "system.diagnostics.diagnosticsource.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Diagnostics.Process/4.1.0": { + "sha512": "mpVZ5bnlSs3tTeJ6jYyDJEIa6tavhAd88lxq1zbYhkkCu0Pno2+gHXcvZcoygq2d8JxW3gojXqNJMTAshduqZA==", + "type": "package", + "path": "system.diagnostics.process/4.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Diagnostics.Process.dll", + "lib/net461/System.Diagnostics.Process.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Diagnostics.Process.dll", + "ref/net461/System.Diagnostics.Process.dll", + "ref/netstandard1.3/System.Diagnostics.Process.dll", + "ref/netstandard1.3/System.Diagnostics.Process.xml", + "ref/netstandard1.3/de/System.Diagnostics.Process.xml", + "ref/netstandard1.3/es/System.Diagnostics.Process.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Process.xml", + "ref/netstandard1.3/it/System.Diagnostics.Process.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Process.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Process.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Process.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Process.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Process.xml", + "ref/netstandard1.4/System.Diagnostics.Process.dll", + "ref/netstandard1.4/System.Diagnostics.Process.xml", + "ref/netstandard1.4/de/System.Diagnostics.Process.xml", + "ref/netstandard1.4/es/System.Diagnostics.Process.xml", + "ref/netstandard1.4/fr/System.Diagnostics.Process.xml", + "ref/netstandard1.4/it/System.Diagnostics.Process.xml", + "ref/netstandard1.4/ja/System.Diagnostics.Process.xml", + "ref/netstandard1.4/ko/System.Diagnostics.Process.xml", + "ref/netstandard1.4/ru/System.Diagnostics.Process.xml", + "ref/netstandard1.4/zh-hans/System.Diagnostics.Process.xml", + "ref/netstandard1.4/zh-hant/System.Diagnostics.Process.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll", + "runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll", + "runtimes/win/lib/net46/System.Diagnostics.Process.dll", + "runtimes/win/lib/net461/System.Diagnostics.Process.dll", + "runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll", + "runtimes/win7/lib/netcore50/_._", + "system.diagnostics.process.4.1.0.nupkg.sha512", + "system.diagnostics.process.nuspec" + ] + }, + "System.Diagnostics.TextWriterTraceListener/4.3.0": { + "sha512": "F11kHWeiwYjFWto+kr8tt9ULMH0k8MsT1XmdCGPTLYHhWgN+2g7JsIZiXDrxlFGccSNkbjfwQy4xIS38gzUiZA==", + "type": "package", + "path": "system.diagnostics.textwritertracelistener/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Diagnostics.TextWriterTraceListener.dll", + "lib/netstandard1.3/System.Diagnostics.TextWriterTraceListener.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Diagnostics.TextWriterTraceListener.dll", + "ref/netstandard1.3/System.Diagnostics.TextWriterTraceListener.dll", + "ref/netstandard1.3/System.Diagnostics.TextWriterTraceListener.xml", + "ref/netstandard1.3/de/System.Diagnostics.TextWriterTraceListener.xml", + "ref/netstandard1.3/es/System.Diagnostics.TextWriterTraceListener.xml", + "ref/netstandard1.3/fr/System.Diagnostics.TextWriterTraceListener.xml", + "ref/netstandard1.3/it/System.Diagnostics.TextWriterTraceListener.xml", + "ref/netstandard1.3/ja/System.Diagnostics.TextWriterTraceListener.xml", + "ref/netstandard1.3/ko/System.Diagnostics.TextWriterTraceListener.xml", + "ref/netstandard1.3/ru/System.Diagnostics.TextWriterTraceListener.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.TextWriterTraceListener.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.TextWriterTraceListener.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.textwritertracelistener.4.3.0.nupkg.sha512", + "system.diagnostics.textwritertracelistener.nuspec" + ] + }, + "System.Diagnostics.Tools/4.3.0": { + "sha512": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", + "type": "package", + "path": "system.diagnostics.tools/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Tools.dll", + "ref/netcore50/System.Diagnostics.Tools.xml", + "ref/netcore50/de/System.Diagnostics.Tools.xml", + "ref/netcore50/es/System.Diagnostics.Tools.xml", + "ref/netcore50/fr/System.Diagnostics.Tools.xml", + "ref/netcore50/it/System.Diagnostics.Tools.xml", + "ref/netcore50/ja/System.Diagnostics.Tools.xml", + "ref/netcore50/ko/System.Diagnostics.Tools.xml", + "ref/netcore50/ru/System.Diagnostics.Tools.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/System.Diagnostics.Tools.dll", + "ref/netstandard1.0/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.tools.4.3.0.nupkg.sha512", + "system.diagnostics.tools.nuspec" + ] + }, + "System.Diagnostics.TraceSource/4.3.0": { + "sha512": "VnYp1NxGx8Ww731y2LJ1vpfb/DKVNKEZ8Jsh5SgQTZREL/YpWRArgh9pI8CDLmgHspZmLL697CaLvH85qQpRiw==", + "type": "package", + "path": "system.diagnostics.tracesource/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Diagnostics.TraceSource.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Diagnostics.TraceSource.dll", + "ref/netstandard1.3/System.Diagnostics.TraceSource.dll", + "ref/netstandard1.3/System.Diagnostics.TraceSource.xml", + "ref/netstandard1.3/de/System.Diagnostics.TraceSource.xml", + "ref/netstandard1.3/es/System.Diagnostics.TraceSource.xml", + "ref/netstandard1.3/fr/System.Diagnostics.TraceSource.xml", + "ref/netstandard1.3/it/System.Diagnostics.TraceSource.xml", + "ref/netstandard1.3/ja/System.Diagnostics.TraceSource.xml", + "ref/netstandard1.3/ko/System.Diagnostics.TraceSource.xml", + "ref/netstandard1.3/ru/System.Diagnostics.TraceSource.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.TraceSource.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.TraceSource.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll", + "runtimes/win/lib/net46/System.Diagnostics.TraceSource.dll", + "runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll", + "system.diagnostics.tracesource.4.3.0.nupkg.sha512", + "system.diagnostics.tracesource.nuspec" + ] + }, + "System.Diagnostics.Tracing/4.3.0": { + "sha512": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "type": "package", + "path": "system.diagnostics.tracing/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Diagnostics.Tracing.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.xml", + "ref/netcore50/de/System.Diagnostics.Tracing.xml", + "ref/netcore50/es/System.Diagnostics.Tracing.xml", + "ref/netcore50/fr/System.Diagnostics.Tracing.xml", + "ref/netcore50/it/System.Diagnostics.Tracing.xml", + "ref/netcore50/ja/System.Diagnostics.Tracing.xml", + "ref/netcore50/ko/System.Diagnostics.Tracing.xml", + "ref/netcore50/ru/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/System.Diagnostics.Tracing.dll", + "ref/netstandard1.1/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/System.Diagnostics.Tracing.dll", + "ref/netstandard1.2/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/System.Diagnostics.Tracing.dll", + "ref/netstandard1.3/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/System.Diagnostics.Tracing.dll", + "ref/netstandard1.5/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.tracing.4.3.0.nupkg.sha512", + "system.diagnostics.tracing.nuspec" + ] + }, + "System.Dynamic.Runtime/4.3.0": { + "sha512": "SNVi1E/vfWUAs/WYKhE9+qlS6KqK0YVhnlT0HQtr8pMIA8YX3lwy3uPMownDwdYISBdmAF/2holEIldVp85Wag==", + "type": "package", + "path": "system.dynamic.runtime/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Dynamic.Runtime.dll", + "lib/netstandard1.3/System.Dynamic.Runtime.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Dynamic.Runtime.dll", + "ref/netcore50/System.Dynamic.Runtime.xml", + "ref/netcore50/de/System.Dynamic.Runtime.xml", + "ref/netcore50/es/System.Dynamic.Runtime.xml", + "ref/netcore50/fr/System.Dynamic.Runtime.xml", + "ref/netcore50/it/System.Dynamic.Runtime.xml", + "ref/netcore50/ja/System.Dynamic.Runtime.xml", + "ref/netcore50/ko/System.Dynamic.Runtime.xml", + "ref/netcore50/ru/System.Dynamic.Runtime.xml", + "ref/netcore50/zh-hans/System.Dynamic.Runtime.xml", + "ref/netcore50/zh-hant/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/System.Dynamic.Runtime.dll", + "ref/netstandard1.0/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/de/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/es/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/fr/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/it/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/ja/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/ko/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/ru/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/System.Dynamic.Runtime.dll", + "ref/netstandard1.3/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/de/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/es/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/fr/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/it/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/ja/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/ko/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/ru/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll", + "system.dynamic.runtime.4.3.0.nupkg.sha512", + "system.dynamic.runtime.nuspec" + ] + }, + "System.Globalization/4.3.0": { + "sha512": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "type": "package", + "path": "system.globalization/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Globalization.dll", + "ref/netcore50/System.Globalization.xml", + "ref/netcore50/de/System.Globalization.xml", + "ref/netcore50/es/System.Globalization.xml", + "ref/netcore50/fr/System.Globalization.xml", + "ref/netcore50/it/System.Globalization.xml", + "ref/netcore50/ja/System.Globalization.xml", + "ref/netcore50/ko/System.Globalization.xml", + "ref/netcore50/ru/System.Globalization.xml", + "ref/netcore50/zh-hans/System.Globalization.xml", + "ref/netcore50/zh-hant/System.Globalization.xml", + "ref/netstandard1.0/System.Globalization.dll", + "ref/netstandard1.0/System.Globalization.xml", + "ref/netstandard1.0/de/System.Globalization.xml", + "ref/netstandard1.0/es/System.Globalization.xml", + "ref/netstandard1.0/fr/System.Globalization.xml", + "ref/netstandard1.0/it/System.Globalization.xml", + "ref/netstandard1.0/ja/System.Globalization.xml", + "ref/netstandard1.0/ko/System.Globalization.xml", + "ref/netstandard1.0/ru/System.Globalization.xml", + "ref/netstandard1.0/zh-hans/System.Globalization.xml", + "ref/netstandard1.0/zh-hant/System.Globalization.xml", + "ref/netstandard1.3/System.Globalization.dll", + "ref/netstandard1.3/System.Globalization.xml", + "ref/netstandard1.3/de/System.Globalization.xml", + "ref/netstandard1.3/es/System.Globalization.xml", + "ref/netstandard1.3/fr/System.Globalization.xml", + "ref/netstandard1.3/it/System.Globalization.xml", + "ref/netstandard1.3/ja/System.Globalization.xml", + "ref/netstandard1.3/ko/System.Globalization.xml", + "ref/netstandard1.3/ru/System.Globalization.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.globalization.4.3.0.nupkg.sha512", + "system.globalization.nuspec" + ] + }, + "System.Globalization.Calendars/4.3.0": { + "sha512": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", + "type": "package", + "path": "system.globalization.calendars/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Globalization.Calendars.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Globalization.Calendars.dll", + "ref/netstandard1.3/System.Globalization.Calendars.dll", + "ref/netstandard1.3/System.Globalization.Calendars.xml", + "ref/netstandard1.3/de/System.Globalization.Calendars.xml", + "ref/netstandard1.3/es/System.Globalization.Calendars.xml", + "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", + "ref/netstandard1.3/it/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.globalization.calendars.4.3.0.nupkg.sha512", + "system.globalization.calendars.nuspec" + ] + }, + "System.Globalization.Extensions/4.3.0": { + "sha512": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", + "type": "package", + "path": "system.globalization.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Globalization.Extensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Globalization.Extensions.dll", + "ref/netstandard1.3/System.Globalization.Extensions.dll", + "ref/netstandard1.3/System.Globalization.Extensions.xml", + "ref/netstandard1.3/de/System.Globalization.Extensions.xml", + "ref/netstandard1.3/es/System.Globalization.Extensions.xml", + "ref/netstandard1.3/fr/System.Globalization.Extensions.xml", + "ref/netstandard1.3/it/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ja/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ko/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ru/System.Globalization.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll", + "runtimes/win/lib/net46/System.Globalization.Extensions.dll", + "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll", + "system.globalization.extensions.4.3.0.nupkg.sha512", + "system.globalization.extensions.nuspec" + ] + }, + "System.IO/4.3.0": { + "sha512": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "type": "package", + "path": "system.io/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.IO.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.IO.dll", + "ref/netcore50/System.IO.dll", + "ref/netcore50/System.IO.xml", + "ref/netcore50/de/System.IO.xml", + "ref/netcore50/es/System.IO.xml", + "ref/netcore50/fr/System.IO.xml", + "ref/netcore50/it/System.IO.xml", + "ref/netcore50/ja/System.IO.xml", + "ref/netcore50/ko/System.IO.xml", + "ref/netcore50/ru/System.IO.xml", + "ref/netcore50/zh-hans/System.IO.xml", + "ref/netcore50/zh-hant/System.IO.xml", + "ref/netstandard1.0/System.IO.dll", + "ref/netstandard1.0/System.IO.xml", + "ref/netstandard1.0/de/System.IO.xml", + "ref/netstandard1.0/es/System.IO.xml", + "ref/netstandard1.0/fr/System.IO.xml", + "ref/netstandard1.0/it/System.IO.xml", + "ref/netstandard1.0/ja/System.IO.xml", + "ref/netstandard1.0/ko/System.IO.xml", + "ref/netstandard1.0/ru/System.IO.xml", + "ref/netstandard1.0/zh-hans/System.IO.xml", + "ref/netstandard1.0/zh-hant/System.IO.xml", + "ref/netstandard1.3/System.IO.dll", + "ref/netstandard1.3/System.IO.xml", + "ref/netstandard1.3/de/System.IO.xml", + "ref/netstandard1.3/es/System.IO.xml", + "ref/netstandard1.3/fr/System.IO.xml", + "ref/netstandard1.3/it/System.IO.xml", + "ref/netstandard1.3/ja/System.IO.xml", + "ref/netstandard1.3/ko/System.IO.xml", + "ref/netstandard1.3/ru/System.IO.xml", + "ref/netstandard1.3/zh-hans/System.IO.xml", + "ref/netstandard1.3/zh-hant/System.IO.xml", + "ref/netstandard1.5/System.IO.dll", + "ref/netstandard1.5/System.IO.xml", + "ref/netstandard1.5/de/System.IO.xml", + "ref/netstandard1.5/es/System.IO.xml", + "ref/netstandard1.5/fr/System.IO.xml", + "ref/netstandard1.5/it/System.IO.xml", + "ref/netstandard1.5/ja/System.IO.xml", + "ref/netstandard1.5/ko/System.IO.xml", + "ref/netstandard1.5/ru/System.IO.xml", + "ref/netstandard1.5/zh-hans/System.IO.xml", + "ref/netstandard1.5/zh-hant/System.IO.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.4.3.0.nupkg.sha512", + "system.io.nuspec" + ] + }, + "System.IO.Compression/4.3.0": { + "sha512": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", + "type": "package", + "path": "system.io.compression/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net46/System.IO.Compression.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/System.IO.Compression.dll", + "ref/netcore50/System.IO.Compression.dll", + "ref/netcore50/System.IO.Compression.xml", + "ref/netcore50/de/System.IO.Compression.xml", + "ref/netcore50/es/System.IO.Compression.xml", + "ref/netcore50/fr/System.IO.Compression.xml", + "ref/netcore50/it/System.IO.Compression.xml", + "ref/netcore50/ja/System.IO.Compression.xml", + "ref/netcore50/ko/System.IO.Compression.xml", + "ref/netcore50/ru/System.IO.Compression.xml", + "ref/netcore50/zh-hans/System.IO.Compression.xml", + "ref/netcore50/zh-hant/System.IO.Compression.xml", + "ref/netstandard1.1/System.IO.Compression.dll", + "ref/netstandard1.1/System.IO.Compression.xml", + "ref/netstandard1.1/de/System.IO.Compression.xml", + "ref/netstandard1.1/es/System.IO.Compression.xml", + "ref/netstandard1.1/fr/System.IO.Compression.xml", + "ref/netstandard1.1/it/System.IO.Compression.xml", + "ref/netstandard1.1/ja/System.IO.Compression.xml", + "ref/netstandard1.1/ko/System.IO.Compression.xml", + "ref/netstandard1.1/ru/System.IO.Compression.xml", + "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", + "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", + "ref/netstandard1.3/System.IO.Compression.dll", + "ref/netstandard1.3/System.IO.Compression.xml", + "ref/netstandard1.3/de/System.IO.Compression.xml", + "ref/netstandard1.3/es/System.IO.Compression.xml", + "ref/netstandard1.3/fr/System.IO.Compression.xml", + "ref/netstandard1.3/it/System.IO.Compression.xml", + "ref/netstandard1.3/ja/System.IO.Compression.xml", + "ref/netstandard1.3/ko/System.IO.Compression.xml", + "ref/netstandard1.3/ru/System.IO.Compression.xml", + "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", + "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", + "runtimes/win/lib/net46/System.IO.Compression.dll", + "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll", + "system.io.compression.4.3.0.nupkg.sha512", + "system.io.compression.nuspec" + ] + }, + "System.IO.Compression.ZipFile/4.3.0": { + "sha512": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==", + "type": "package", + "path": "system.io.compression.zipfile/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.Compression.ZipFile.dll", + "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.Compression.ZipFile.dll", + "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", + "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.compression.zipfile.4.3.0.nupkg.sha512", + "system.io.compression.zipfile.nuspec" + ] + }, + "System.IO.FileSystem/4.3.0": { + "sha512": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", + "type": "package", + "path": "system.io.filesystem/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.dll", + "ref/netstandard1.3/System.IO.FileSystem.dll", + "ref/netstandard1.3/System.IO.FileSystem.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.filesystem.4.3.0.nupkg.sha512", + "system.io.filesystem.nuspec" + ] + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "sha512": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", + "type": "package", + "path": "system.io.filesystem.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.Primitives.dll", + "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.Primitives.dll", + "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", + "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.filesystem.primitives.4.3.0.nupkg.sha512", + "system.io.filesystem.primitives.nuspec" + ] + }, + "System.Linq/4.3.0": { + "sha512": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", + "type": "package", + "path": "system.linq/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Linq.dll", + "lib/netcore50/System.Linq.dll", + "lib/netstandard1.6/System.Linq.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Linq.dll", + "ref/netcore50/System.Linq.dll", + "ref/netcore50/System.Linq.xml", + "ref/netcore50/de/System.Linq.xml", + "ref/netcore50/es/System.Linq.xml", + "ref/netcore50/fr/System.Linq.xml", + "ref/netcore50/it/System.Linq.xml", + "ref/netcore50/ja/System.Linq.xml", + "ref/netcore50/ko/System.Linq.xml", + "ref/netcore50/ru/System.Linq.xml", + "ref/netcore50/zh-hans/System.Linq.xml", + "ref/netcore50/zh-hant/System.Linq.xml", + "ref/netstandard1.0/System.Linq.dll", + "ref/netstandard1.0/System.Linq.xml", + "ref/netstandard1.0/de/System.Linq.xml", + "ref/netstandard1.0/es/System.Linq.xml", + "ref/netstandard1.0/fr/System.Linq.xml", + "ref/netstandard1.0/it/System.Linq.xml", + "ref/netstandard1.0/ja/System.Linq.xml", + "ref/netstandard1.0/ko/System.Linq.xml", + "ref/netstandard1.0/ru/System.Linq.xml", + "ref/netstandard1.0/zh-hans/System.Linq.xml", + "ref/netstandard1.0/zh-hant/System.Linq.xml", + "ref/netstandard1.6/System.Linq.dll", + "ref/netstandard1.6/System.Linq.xml", + "ref/netstandard1.6/de/System.Linq.xml", + "ref/netstandard1.6/es/System.Linq.xml", + "ref/netstandard1.6/fr/System.Linq.xml", + "ref/netstandard1.6/it/System.Linq.xml", + "ref/netstandard1.6/ja/System.Linq.xml", + "ref/netstandard1.6/ko/System.Linq.xml", + "ref/netstandard1.6/ru/System.Linq.xml", + "ref/netstandard1.6/zh-hans/System.Linq.xml", + "ref/netstandard1.6/zh-hant/System.Linq.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.linq.4.3.0.nupkg.sha512", + "system.linq.nuspec" + ] + }, + "System.Linq.Expressions/4.3.0": { + "sha512": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==", + "type": "package", + "path": "system.linq.expressions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Linq.Expressions.dll", + "lib/netcore50/System.Linq.Expressions.dll", + "lib/netstandard1.6/System.Linq.Expressions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.xml", + "ref/netcore50/de/System.Linq.Expressions.xml", + "ref/netcore50/es/System.Linq.Expressions.xml", + "ref/netcore50/fr/System.Linq.Expressions.xml", + "ref/netcore50/it/System.Linq.Expressions.xml", + "ref/netcore50/ja/System.Linq.Expressions.xml", + "ref/netcore50/ko/System.Linq.Expressions.xml", + "ref/netcore50/ru/System.Linq.Expressions.xml", + "ref/netcore50/zh-hans/System.Linq.Expressions.xml", + "ref/netcore50/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.0/System.Linq.Expressions.dll", + "ref/netstandard1.0/System.Linq.Expressions.xml", + "ref/netstandard1.0/de/System.Linq.Expressions.xml", + "ref/netstandard1.0/es/System.Linq.Expressions.xml", + "ref/netstandard1.0/fr/System.Linq.Expressions.xml", + "ref/netstandard1.0/it/System.Linq.Expressions.xml", + "ref/netstandard1.0/ja/System.Linq.Expressions.xml", + "ref/netstandard1.0/ko/System.Linq.Expressions.xml", + "ref/netstandard1.0/ru/System.Linq.Expressions.xml", + "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.3/System.Linq.Expressions.dll", + "ref/netstandard1.3/System.Linq.Expressions.xml", + "ref/netstandard1.3/de/System.Linq.Expressions.xml", + "ref/netstandard1.3/es/System.Linq.Expressions.xml", + "ref/netstandard1.3/fr/System.Linq.Expressions.xml", + "ref/netstandard1.3/it/System.Linq.Expressions.xml", + "ref/netstandard1.3/ja/System.Linq.Expressions.xml", + "ref/netstandard1.3/ko/System.Linq.Expressions.xml", + "ref/netstandard1.3/ru/System.Linq.Expressions.xml", + "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.6/System.Linq.Expressions.dll", + "ref/netstandard1.6/System.Linq.Expressions.xml", + "ref/netstandard1.6/de/System.Linq.Expressions.xml", + "ref/netstandard1.6/es/System.Linq.Expressions.xml", + "ref/netstandard1.6/fr/System.Linq.Expressions.xml", + "ref/netstandard1.6/it/System.Linq.Expressions.xml", + "ref/netstandard1.6/ja/System.Linq.Expressions.xml", + "ref/netstandard1.6/ko/System.Linq.Expressions.xml", + "ref/netstandard1.6/ru/System.Linq.Expressions.xml", + "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll", + "system.linq.expressions.4.3.0.nupkg.sha512", + "system.linq.expressions.nuspec" + ] + }, + "System.Net.Http/4.3.0": { + "sha512": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", + "type": "package", + "path": "system.net.http/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/Xamarinmac20/_._", + "lib/monoandroid10/_._", + "lib/monotouch10/_._", + "lib/net45/_._", + "lib/net46/System.Net.Http.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/Xamarinmac20/_._", + "ref/monoandroid10/_._", + "ref/monotouch10/_._", + "ref/net45/_._", + "ref/net46/System.Net.Http.dll", + "ref/net46/System.Net.Http.xml", + "ref/net46/de/System.Net.Http.xml", + "ref/net46/es/System.Net.Http.xml", + "ref/net46/fr/System.Net.Http.xml", + "ref/net46/it/System.Net.Http.xml", + "ref/net46/ja/System.Net.Http.xml", + "ref/net46/ko/System.Net.Http.xml", + "ref/net46/ru/System.Net.Http.xml", + "ref/net46/zh-hans/System.Net.Http.xml", + "ref/net46/zh-hant/System.Net.Http.xml", + "ref/netcore50/System.Net.Http.dll", + "ref/netcore50/System.Net.Http.xml", + "ref/netcore50/de/System.Net.Http.xml", + "ref/netcore50/es/System.Net.Http.xml", + "ref/netcore50/fr/System.Net.Http.xml", + "ref/netcore50/it/System.Net.Http.xml", + "ref/netcore50/ja/System.Net.Http.xml", + "ref/netcore50/ko/System.Net.Http.xml", + "ref/netcore50/ru/System.Net.Http.xml", + "ref/netcore50/zh-hans/System.Net.Http.xml", + "ref/netcore50/zh-hant/System.Net.Http.xml", + "ref/netstandard1.1/System.Net.Http.dll", + "ref/netstandard1.1/System.Net.Http.xml", + "ref/netstandard1.1/de/System.Net.Http.xml", + "ref/netstandard1.1/es/System.Net.Http.xml", + "ref/netstandard1.1/fr/System.Net.Http.xml", + "ref/netstandard1.1/it/System.Net.Http.xml", + "ref/netstandard1.1/ja/System.Net.Http.xml", + "ref/netstandard1.1/ko/System.Net.Http.xml", + "ref/netstandard1.1/ru/System.Net.Http.xml", + "ref/netstandard1.1/zh-hans/System.Net.Http.xml", + "ref/netstandard1.1/zh-hant/System.Net.Http.xml", + "ref/netstandard1.3/System.Net.Http.dll", + "ref/netstandard1.3/System.Net.Http.xml", + "ref/netstandard1.3/de/System.Net.Http.xml", + "ref/netstandard1.3/es/System.Net.Http.xml", + "ref/netstandard1.3/fr/System.Net.Http.xml", + "ref/netstandard1.3/it/System.Net.Http.xml", + "ref/netstandard1.3/ja/System.Net.Http.xml", + "ref/netstandard1.3/ko/System.Net.Http.xml", + "ref/netstandard1.3/ru/System.Net.Http.xml", + "ref/netstandard1.3/zh-hans/System.Net.Http.xml", + "ref/netstandard1.3/zh-hant/System.Net.Http.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", + "runtimes/win/lib/net46/System.Net.Http.dll", + "runtimes/win/lib/netcore50/System.Net.Http.dll", + "runtimes/win/lib/netstandard1.3/System.Net.Http.dll", + "system.net.http.4.3.0.nupkg.sha512", + "system.net.http.nuspec" + ] + }, + "System.Net.Primitives/4.3.0": { + "sha512": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", + "type": "package", + "path": "system.net.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Net.Primitives.dll", + "ref/netcore50/System.Net.Primitives.xml", + "ref/netcore50/de/System.Net.Primitives.xml", + "ref/netcore50/es/System.Net.Primitives.xml", + "ref/netcore50/fr/System.Net.Primitives.xml", + "ref/netcore50/it/System.Net.Primitives.xml", + "ref/netcore50/ja/System.Net.Primitives.xml", + "ref/netcore50/ko/System.Net.Primitives.xml", + "ref/netcore50/ru/System.Net.Primitives.xml", + "ref/netcore50/zh-hans/System.Net.Primitives.xml", + "ref/netcore50/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.0/System.Net.Primitives.dll", + "ref/netstandard1.0/System.Net.Primitives.xml", + "ref/netstandard1.0/de/System.Net.Primitives.xml", + "ref/netstandard1.0/es/System.Net.Primitives.xml", + "ref/netstandard1.0/fr/System.Net.Primitives.xml", + "ref/netstandard1.0/it/System.Net.Primitives.xml", + "ref/netstandard1.0/ja/System.Net.Primitives.xml", + "ref/netstandard1.0/ko/System.Net.Primitives.xml", + "ref/netstandard1.0/ru/System.Net.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.1/System.Net.Primitives.dll", + "ref/netstandard1.1/System.Net.Primitives.xml", + "ref/netstandard1.1/de/System.Net.Primitives.xml", + "ref/netstandard1.1/es/System.Net.Primitives.xml", + "ref/netstandard1.1/fr/System.Net.Primitives.xml", + "ref/netstandard1.1/it/System.Net.Primitives.xml", + "ref/netstandard1.1/ja/System.Net.Primitives.xml", + "ref/netstandard1.1/ko/System.Net.Primitives.xml", + "ref/netstandard1.1/ru/System.Net.Primitives.xml", + "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.3/System.Net.Primitives.dll", + "ref/netstandard1.3/System.Net.Primitives.xml", + "ref/netstandard1.3/de/System.Net.Primitives.xml", + "ref/netstandard1.3/es/System.Net.Primitives.xml", + "ref/netstandard1.3/fr/System.Net.Primitives.xml", + "ref/netstandard1.3/it/System.Net.Primitives.xml", + "ref/netstandard1.3/ja/System.Net.Primitives.xml", + "ref/netstandard1.3/ko/System.Net.Primitives.xml", + "ref/netstandard1.3/ru/System.Net.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.net.primitives.4.3.0.nupkg.sha512", + "system.net.primitives.nuspec" + ] + }, + "System.Net.Sockets/4.3.0": { + "sha512": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==", + "type": "package", + "path": "system.net.sockets/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Net.Sockets.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Net.Sockets.dll", + "ref/netstandard1.3/System.Net.Sockets.dll", + "ref/netstandard1.3/System.Net.Sockets.xml", + "ref/netstandard1.3/de/System.Net.Sockets.xml", + "ref/netstandard1.3/es/System.Net.Sockets.xml", + "ref/netstandard1.3/fr/System.Net.Sockets.xml", + "ref/netstandard1.3/it/System.Net.Sockets.xml", + "ref/netstandard1.3/ja/System.Net.Sockets.xml", + "ref/netstandard1.3/ko/System.Net.Sockets.xml", + "ref/netstandard1.3/ru/System.Net.Sockets.xml", + "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", + "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.net.sockets.4.3.0.nupkg.sha512", + "system.net.sockets.nuspec" + ] + }, + "System.ObjectModel/4.3.0": { + "sha512": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", + "type": "package", + "path": "system.objectmodel/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.ObjectModel.dll", + "lib/netstandard1.3/System.ObjectModel.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.ObjectModel.dll", + "ref/netcore50/System.ObjectModel.xml", + "ref/netcore50/de/System.ObjectModel.xml", + "ref/netcore50/es/System.ObjectModel.xml", + "ref/netcore50/fr/System.ObjectModel.xml", + "ref/netcore50/it/System.ObjectModel.xml", + "ref/netcore50/ja/System.ObjectModel.xml", + "ref/netcore50/ko/System.ObjectModel.xml", + "ref/netcore50/ru/System.ObjectModel.xml", + "ref/netcore50/zh-hans/System.ObjectModel.xml", + "ref/netcore50/zh-hant/System.ObjectModel.xml", + "ref/netstandard1.0/System.ObjectModel.dll", + "ref/netstandard1.0/System.ObjectModel.xml", + "ref/netstandard1.0/de/System.ObjectModel.xml", + "ref/netstandard1.0/es/System.ObjectModel.xml", + "ref/netstandard1.0/fr/System.ObjectModel.xml", + "ref/netstandard1.0/it/System.ObjectModel.xml", + "ref/netstandard1.0/ja/System.ObjectModel.xml", + "ref/netstandard1.0/ko/System.ObjectModel.xml", + "ref/netstandard1.0/ru/System.ObjectModel.xml", + "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", + "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", + "ref/netstandard1.3/System.ObjectModel.dll", + "ref/netstandard1.3/System.ObjectModel.xml", + "ref/netstandard1.3/de/System.ObjectModel.xml", + "ref/netstandard1.3/es/System.ObjectModel.xml", + "ref/netstandard1.3/fr/System.ObjectModel.xml", + "ref/netstandard1.3/it/System.ObjectModel.xml", + "ref/netstandard1.3/ja/System.ObjectModel.xml", + "ref/netstandard1.3/ko/System.ObjectModel.xml", + "ref/netstandard1.3/ru/System.ObjectModel.xml", + "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", + "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.objectmodel.4.3.0.nupkg.sha512", + "system.objectmodel.nuspec" + ] + }, + "System.Private.DataContractSerialization/4.1.1": { + "sha512": "lcqFBUaCZxPiUkA4dlSOoPZGtZsAuuElH2XHgLwGLxd7ZozWetV5yiz0qGAV2AUYOqw97MtZBjbLMN16Xz4vXA==", + "type": "package", + "path": "system.private.datacontractserialization/4.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.3/System.Private.DataContractSerialization.dll", + "ref/netstandard/_._", + "runtimes/aot/lib/netcore50/System.Private.DataContractSerialization.dll", + "system.private.datacontractserialization.4.1.1.nupkg.sha512", + "system.private.datacontractserialization.nuspec" + ] + }, + "System.Reflection/4.3.0": { + "sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "type": "package", + "path": "system.reflection/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Reflection.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Reflection.dll", + "ref/netcore50/System.Reflection.dll", + "ref/netcore50/System.Reflection.xml", + "ref/netcore50/de/System.Reflection.xml", + "ref/netcore50/es/System.Reflection.xml", + "ref/netcore50/fr/System.Reflection.xml", + "ref/netcore50/it/System.Reflection.xml", + "ref/netcore50/ja/System.Reflection.xml", + "ref/netcore50/ko/System.Reflection.xml", + "ref/netcore50/ru/System.Reflection.xml", + "ref/netcore50/zh-hans/System.Reflection.xml", + "ref/netcore50/zh-hant/System.Reflection.xml", + "ref/netstandard1.0/System.Reflection.dll", + "ref/netstandard1.0/System.Reflection.xml", + "ref/netstandard1.0/de/System.Reflection.xml", + "ref/netstandard1.0/es/System.Reflection.xml", + "ref/netstandard1.0/fr/System.Reflection.xml", + "ref/netstandard1.0/it/System.Reflection.xml", + "ref/netstandard1.0/ja/System.Reflection.xml", + "ref/netstandard1.0/ko/System.Reflection.xml", + "ref/netstandard1.0/ru/System.Reflection.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.xml", + "ref/netstandard1.3/System.Reflection.dll", + "ref/netstandard1.3/System.Reflection.xml", + "ref/netstandard1.3/de/System.Reflection.xml", + "ref/netstandard1.3/es/System.Reflection.xml", + "ref/netstandard1.3/fr/System.Reflection.xml", + "ref/netstandard1.3/it/System.Reflection.xml", + "ref/netstandard1.3/ja/System.Reflection.xml", + "ref/netstandard1.3/ko/System.Reflection.xml", + "ref/netstandard1.3/ru/System.Reflection.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.xml", + "ref/netstandard1.5/System.Reflection.dll", + "ref/netstandard1.5/System.Reflection.xml", + "ref/netstandard1.5/de/System.Reflection.xml", + "ref/netstandard1.5/es/System.Reflection.xml", + "ref/netstandard1.5/fr/System.Reflection.xml", + "ref/netstandard1.5/it/System.Reflection.xml", + "ref/netstandard1.5/ja/System.Reflection.xml", + "ref/netstandard1.5/ko/System.Reflection.xml", + "ref/netstandard1.5/ru/System.Reflection.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.4.3.0.nupkg.sha512", + "system.reflection.nuspec" + ] + }, + "System.Reflection.Emit/4.3.0": { + "sha512": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==", + "type": "package", + "path": "system.reflection.emit/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/monotouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.dll", + "lib/netstandard1.3/System.Reflection.Emit.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/net45/_._", + "ref/netstandard1.1/System.Reflection.Emit.dll", + "ref/netstandard1.1/System.Reflection.Emit.xml", + "ref/netstandard1.1/de/System.Reflection.Emit.xml", + "ref/netstandard1.1/es/System.Reflection.Emit.xml", + "ref/netstandard1.1/fr/System.Reflection.Emit.xml", + "ref/netstandard1.1/it/System.Reflection.Emit.xml", + "ref/netstandard1.1/ja/System.Reflection.Emit.xml", + "ref/netstandard1.1/ko/System.Reflection.Emit.xml", + "ref/netstandard1.1/ru/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", + "ref/xamarinmac20/_._", + "system.reflection.emit.4.3.0.nupkg.sha512", + "system.reflection.emit.nuspec" + ] + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "sha512": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", + "type": "package", + "path": "system.reflection.emit.ilgeneration/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", + "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", + "lib/portable-net45+wp8/_._", + "lib/wp80/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", + "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", + "ref/portable-net45+wp8/_._", + "ref/wp80/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/_._", + "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512", + "system.reflection.emit.ilgeneration.nuspec" + ] + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "sha512": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==", + "type": "package", + "path": "system.reflection.emit.lightweight/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.Lightweight.dll", + "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", + "lib/portable-net45+wp8/_._", + "lib/wp80/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", + "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", + "ref/portable-net45+wp8/_._", + "ref/wp80/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/_._", + "system.reflection.emit.lightweight.4.3.0.nupkg.sha512", + "system.reflection.emit.lightweight.nuspec" + ] + }, + "System.Reflection.Extensions/4.3.0": { + "sha512": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", + "type": "package", + "path": "system.reflection.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Extensions.dll", + "ref/netcore50/System.Reflection.Extensions.xml", + "ref/netcore50/de/System.Reflection.Extensions.xml", + "ref/netcore50/es/System.Reflection.Extensions.xml", + "ref/netcore50/fr/System.Reflection.Extensions.xml", + "ref/netcore50/it/System.Reflection.Extensions.xml", + "ref/netcore50/ja/System.Reflection.Extensions.xml", + "ref/netcore50/ko/System.Reflection.Extensions.xml", + "ref/netcore50/ru/System.Reflection.Extensions.xml", + "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", + "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", + "ref/netstandard1.0/System.Reflection.Extensions.dll", + "ref/netstandard1.0/System.Reflection.Extensions.xml", + "ref/netstandard1.0/de/System.Reflection.Extensions.xml", + "ref/netstandard1.0/es/System.Reflection.Extensions.xml", + "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", + "ref/netstandard1.0/it/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.extensions.4.3.0.nupkg.sha512", + "system.reflection.extensions.nuspec" + ] + }, + "System.Reflection.Metadata/1.6.0": { + "sha512": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==", + "type": "package", + "path": "system.reflection.metadata/1.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/netstandard1.1/System.Reflection.Metadata.dll", + "lib/netstandard1.1/System.Reflection.Metadata.xml", + "lib/netstandard2.0/System.Reflection.Metadata.dll", + "lib/netstandard2.0/System.Reflection.Metadata.xml", + "lib/portable-net45+win8/System.Reflection.Metadata.dll", + "lib/portable-net45+win8/System.Reflection.Metadata.xml", + "system.reflection.metadata.1.6.0.nupkg.sha512", + "system.reflection.metadata.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Reflection.Primitives/4.3.0": { + "sha512": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "type": "package", + "path": "system.reflection.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Primitives.dll", + "ref/netcore50/System.Reflection.Primitives.xml", + "ref/netcore50/de/System.Reflection.Primitives.xml", + "ref/netcore50/es/System.Reflection.Primitives.xml", + "ref/netcore50/fr/System.Reflection.Primitives.xml", + "ref/netcore50/it/System.Reflection.Primitives.xml", + "ref/netcore50/ja/System.Reflection.Primitives.xml", + "ref/netcore50/ko/System.Reflection.Primitives.xml", + "ref/netcore50/ru/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", + "ref/netstandard1.0/System.Reflection.Primitives.dll", + "ref/netstandard1.0/System.Reflection.Primitives.xml", + "ref/netstandard1.0/de/System.Reflection.Primitives.xml", + "ref/netstandard1.0/es/System.Reflection.Primitives.xml", + "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", + "ref/netstandard1.0/it/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.primitives.4.3.0.nupkg.sha512", + "system.reflection.primitives.nuspec" + ] + }, + "System.Reflection.TypeExtensions/4.3.0": { + "sha512": "7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", + "type": "package", + "path": "system.reflection.typeextensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Reflection.TypeExtensions.dll", + "lib/net462/System.Reflection.TypeExtensions.dll", + "lib/netcore50/System.Reflection.TypeExtensions.dll", + "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Reflection.TypeExtensions.dll", + "ref/net462/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll", + "system.reflection.typeextensions.4.3.0.nupkg.sha512", + "system.reflection.typeextensions.nuspec" + ] + }, + "System.Resources.ResourceManager/4.3.0": { + "sha512": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "type": "package", + "path": "system.resources.resourcemanager/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Resources.ResourceManager.dll", + "ref/netcore50/System.Resources.ResourceManager.xml", + "ref/netcore50/de/System.Resources.ResourceManager.xml", + "ref/netcore50/es/System.Resources.ResourceManager.xml", + "ref/netcore50/fr/System.Resources.ResourceManager.xml", + "ref/netcore50/it/System.Resources.ResourceManager.xml", + "ref/netcore50/ja/System.Resources.ResourceManager.xml", + "ref/netcore50/ko/System.Resources.ResourceManager.xml", + "ref/netcore50/ru/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/System.Resources.ResourceManager.dll", + "ref/netstandard1.0/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.resources.resourcemanager.4.3.0.nupkg.sha512", + "system.resources.resourcemanager.nuspec" + ] + }, + "System.Runtime/4.3.0": { + "sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "type": "package", + "path": "system.runtime/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.dll", + "lib/portable-net45+win8+wp80+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.dll", + "ref/netcore50/System.Runtime.dll", + "ref/netcore50/System.Runtime.xml", + "ref/netcore50/de/System.Runtime.xml", + "ref/netcore50/es/System.Runtime.xml", + "ref/netcore50/fr/System.Runtime.xml", + "ref/netcore50/it/System.Runtime.xml", + "ref/netcore50/ja/System.Runtime.xml", + "ref/netcore50/ko/System.Runtime.xml", + "ref/netcore50/ru/System.Runtime.xml", + "ref/netcore50/zh-hans/System.Runtime.xml", + "ref/netcore50/zh-hant/System.Runtime.xml", + "ref/netstandard1.0/System.Runtime.dll", + "ref/netstandard1.0/System.Runtime.xml", + "ref/netstandard1.0/de/System.Runtime.xml", + "ref/netstandard1.0/es/System.Runtime.xml", + "ref/netstandard1.0/fr/System.Runtime.xml", + "ref/netstandard1.0/it/System.Runtime.xml", + "ref/netstandard1.0/ja/System.Runtime.xml", + "ref/netstandard1.0/ko/System.Runtime.xml", + "ref/netstandard1.0/ru/System.Runtime.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.xml", + "ref/netstandard1.2/System.Runtime.dll", + "ref/netstandard1.2/System.Runtime.xml", + "ref/netstandard1.2/de/System.Runtime.xml", + "ref/netstandard1.2/es/System.Runtime.xml", + "ref/netstandard1.2/fr/System.Runtime.xml", + "ref/netstandard1.2/it/System.Runtime.xml", + "ref/netstandard1.2/ja/System.Runtime.xml", + "ref/netstandard1.2/ko/System.Runtime.xml", + "ref/netstandard1.2/ru/System.Runtime.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.xml", + "ref/netstandard1.3/System.Runtime.dll", + "ref/netstandard1.3/System.Runtime.xml", + "ref/netstandard1.3/de/System.Runtime.xml", + "ref/netstandard1.3/es/System.Runtime.xml", + "ref/netstandard1.3/fr/System.Runtime.xml", + "ref/netstandard1.3/it/System.Runtime.xml", + "ref/netstandard1.3/ja/System.Runtime.xml", + "ref/netstandard1.3/ko/System.Runtime.xml", + "ref/netstandard1.3/ru/System.Runtime.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.xml", + "ref/netstandard1.5/System.Runtime.dll", + "ref/netstandard1.5/System.Runtime.xml", + "ref/netstandard1.5/de/System.Runtime.xml", + "ref/netstandard1.5/es/System.Runtime.xml", + "ref/netstandard1.5/fr/System.Runtime.xml", + "ref/netstandard1.5/it/System.Runtime.xml", + "ref/netstandard1.5/ja/System.Runtime.xml", + "ref/netstandard1.5/ko/System.Runtime.xml", + "ref/netstandard1.5/ru/System.Runtime.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.xml", + "ref/portable-net45+win8+wp80+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.4.3.0.nupkg.sha512", + "system.runtime.nuspec" + ] + }, + "System.Runtime.CompilerServices.Unsafe/4.5.2": { + "sha512": "wprSFgext8cwqymChhrBLu62LMg/1u92bU+VOwyfBimSPVFXtsNqEWC92Pf9ofzJFlk4IHmJA75EDJn1b2goAQ==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/4.5.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.xml", + "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", + "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml", + "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.4.5.2.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Runtime.Extensions/4.3.0": { + "sha512": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "type": "package", + "path": "system.runtime.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.xml", + "ref/netcore50/de/System.Runtime.Extensions.xml", + "ref/netcore50/es/System.Runtime.Extensions.xml", + "ref/netcore50/fr/System.Runtime.Extensions.xml", + "ref/netcore50/it/System.Runtime.Extensions.xml", + "ref/netcore50/ja/System.Runtime.Extensions.xml", + "ref/netcore50/ko/System.Runtime.Extensions.xml", + "ref/netcore50/ru/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.0/System.Runtime.Extensions.dll", + "ref/netstandard1.0/System.Runtime.Extensions.xml", + "ref/netstandard1.0/de/System.Runtime.Extensions.xml", + "ref/netstandard1.0/es/System.Runtime.Extensions.xml", + "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.0/it/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.3/System.Runtime.Extensions.dll", + "ref/netstandard1.3/System.Runtime.Extensions.xml", + "ref/netstandard1.3/de/System.Runtime.Extensions.xml", + "ref/netstandard1.3/es/System.Runtime.Extensions.xml", + "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.3/it/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.5/System.Runtime.Extensions.dll", + "ref/netstandard1.5/System.Runtime.Extensions.xml", + "ref/netstandard1.5/de/System.Runtime.Extensions.xml", + "ref/netstandard1.5/es/System.Runtime.Extensions.xml", + "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.5/it/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.extensions.4.3.0.nupkg.sha512", + "system.runtime.extensions.nuspec" + ] + }, + "System.Runtime.Handles/4.3.0": { + "sha512": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", + "type": "package", + "path": "system.runtime.handles/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/netstandard1.3/System.Runtime.Handles.dll", + "ref/netstandard1.3/System.Runtime.Handles.xml", + "ref/netstandard1.3/de/System.Runtime.Handles.xml", + "ref/netstandard1.3/es/System.Runtime.Handles.xml", + "ref/netstandard1.3/fr/System.Runtime.Handles.xml", + "ref/netstandard1.3/it/System.Runtime.Handles.xml", + "ref/netstandard1.3/ja/System.Runtime.Handles.xml", + "ref/netstandard1.3/ko/System.Runtime.Handles.xml", + "ref/netstandard1.3/ru/System.Runtime.Handles.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.handles.4.3.0.nupkg.sha512", + "system.runtime.handles.nuspec" + ] + }, + "System.Runtime.InteropServices/4.3.0": { + "sha512": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", + "type": "package", + "path": "system.runtime.interopservices/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.InteropServices.dll", + "lib/net463/System.Runtime.InteropServices.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.InteropServices.dll", + "ref/net463/System.Runtime.InteropServices.dll", + "ref/netcore50/System.Runtime.InteropServices.dll", + "ref/netcore50/System.Runtime.InteropServices.xml", + "ref/netcore50/de/System.Runtime.InteropServices.xml", + "ref/netcore50/es/System.Runtime.InteropServices.xml", + "ref/netcore50/fr/System.Runtime.InteropServices.xml", + "ref/netcore50/it/System.Runtime.InteropServices.xml", + "ref/netcore50/ja/System.Runtime.InteropServices.xml", + "ref/netcore50/ko/System.Runtime.InteropServices.xml", + "ref/netcore50/ru/System.Runtime.InteropServices.xml", + "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", + "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", + "ref/netcoreapp1.1/System.Runtime.InteropServices.dll", + "ref/netstandard1.1/System.Runtime.InteropServices.dll", + "ref/netstandard1.1/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/System.Runtime.InteropServices.dll", + "ref/netstandard1.2/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/System.Runtime.InteropServices.dll", + "ref/netstandard1.3/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/System.Runtime.InteropServices.dll", + "ref/netstandard1.5/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.interopservices.4.3.0.nupkg.sha512", + "system.runtime.interopservices.nuspec" + ] + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "sha512": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", + "type": "package", + "path": "system.runtime.interopservices.runtimeinformation/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", + "system.runtime.interopservices.runtimeinformation.nuspec" + ] + }, + "System.Runtime.Loader/4.0.0": { + "sha512": "4UN78GOVU/mbDFcXkEWtetJT/sJ0yic2gGk1HSlSpWI0TDf421xnrZTDZnwNBapk1GQeYN7U1lTj/aQB1by6ow==", + "type": "package", + "path": "system.runtime.loader/4.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net462/_._", + "lib/netstandard1.5/System.Runtime.Loader.dll", + "ref/netstandard1.5/System.Runtime.Loader.dll", + "ref/netstandard1.5/System.Runtime.Loader.xml", + "ref/netstandard1.5/de/System.Runtime.Loader.xml", + "ref/netstandard1.5/es/System.Runtime.Loader.xml", + "ref/netstandard1.5/fr/System.Runtime.Loader.xml", + "ref/netstandard1.5/it/System.Runtime.Loader.xml", + "ref/netstandard1.5/ja/System.Runtime.Loader.xml", + "ref/netstandard1.5/ko/System.Runtime.Loader.xml", + "ref/netstandard1.5/ru/System.Runtime.Loader.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.Loader.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.Loader.xml", + "system.runtime.loader.4.0.0.nupkg.sha512", + "system.runtime.loader.nuspec" + ] + }, + "System.Runtime.Numerics/4.3.0": { + "sha512": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", + "type": "package", + "path": "system.runtime.numerics/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Runtime.Numerics.dll", + "lib/netstandard1.3/System.Runtime.Numerics.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Runtime.Numerics.dll", + "ref/netcore50/System.Runtime.Numerics.xml", + "ref/netcore50/de/System.Runtime.Numerics.xml", + "ref/netcore50/es/System.Runtime.Numerics.xml", + "ref/netcore50/fr/System.Runtime.Numerics.xml", + "ref/netcore50/it/System.Runtime.Numerics.xml", + "ref/netcore50/ja/System.Runtime.Numerics.xml", + "ref/netcore50/ko/System.Runtime.Numerics.xml", + "ref/netcore50/ru/System.Runtime.Numerics.xml", + "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", + "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", + "ref/netstandard1.1/System.Runtime.Numerics.dll", + "ref/netstandard1.1/System.Runtime.Numerics.xml", + "ref/netstandard1.1/de/System.Runtime.Numerics.xml", + "ref/netstandard1.1/es/System.Runtime.Numerics.xml", + "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", + "ref/netstandard1.1/it/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.numerics.4.3.0.nupkg.sha512", + "system.runtime.numerics.nuspec" + ] + }, + "System.Runtime.Serialization.Json/4.0.2": { + "sha512": "+7DIJhnKYgCzUgcLbVTtRQb2l1M0FP549XFlFkQM5lmNiUBl44AfNbx4bz61xA8PzLtlYwfmif4JJJW7MPPnjg==", + "type": "package", + "path": "system.runtime.serialization.json/4.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Runtime.Serialization.Json.dll", + "lib/netstandard1.3/System.Runtime.Serialization.Json.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Runtime.Serialization.Json.dll", + "ref/netcore50/System.Runtime.Serialization.Json.xml", + "ref/netcore50/de/System.Runtime.Serialization.Json.xml", + "ref/netcore50/es/System.Runtime.Serialization.Json.xml", + "ref/netcore50/fr/System.Runtime.Serialization.Json.xml", + "ref/netcore50/it/System.Runtime.Serialization.Json.xml", + "ref/netcore50/ja/System.Runtime.Serialization.Json.xml", + "ref/netcore50/ko/System.Runtime.Serialization.Json.xml", + "ref/netcore50/ru/System.Runtime.Serialization.Json.xml", + "ref/netcore50/zh-hans/System.Runtime.Serialization.Json.xml", + "ref/netcore50/zh-hant/System.Runtime.Serialization.Json.xml", + "ref/netstandard1.0/System.Runtime.Serialization.Json.dll", + "ref/netstandard1.0/System.Runtime.Serialization.Json.xml", + "ref/netstandard1.0/de/System.Runtime.Serialization.Json.xml", + "ref/netstandard1.0/es/System.Runtime.Serialization.Json.xml", + "ref/netstandard1.0/fr/System.Runtime.Serialization.Json.xml", + "ref/netstandard1.0/it/System.Runtime.Serialization.Json.xml", + "ref/netstandard1.0/ja/System.Runtime.Serialization.Json.xml", + "ref/netstandard1.0/ko/System.Runtime.Serialization.Json.xml", + "ref/netstandard1.0/ru/System.Runtime.Serialization.Json.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Json.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Json.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.serialization.json.4.0.2.nupkg.sha512", + "system.runtime.serialization.json.nuspec" + ] + }, + "System.Runtime.Serialization.Primitives/4.1.1": { + "sha512": "HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==", + "type": "package", + "path": "system.runtime.serialization.primitives/4.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net46/System.Runtime.Serialization.Primitives.dll", + "lib/netcore50/System.Runtime.Serialization.Primitives.dll", + "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/System.Runtime.Serialization.Primitives.dll", + "ref/netcore50/System.Runtime.Serialization.Primitives.dll", + "ref/netcore50/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/de/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/es/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/fr/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/it/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/ja/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/ko/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/ru/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/zh-hans/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/zh-hant/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/System.Runtime.Serialization.Primitives.dll", + "ref/netstandard1.0/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/de/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/es/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/fr/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/it/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/ja/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/ko/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/ru/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll", + "ref/netstandard1.3/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/de/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/es/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/fr/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/it/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/ja/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/ko/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/ru/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Serialization.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll", + "system.runtime.serialization.primitives.4.1.1.nupkg.sha512", + "system.runtime.serialization.primitives.nuspec" + ] + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "sha512": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", + "type": "package", + "path": "system.security.cryptography.algorithms/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Algorithms.dll", + "lib/net461/System.Security.Cryptography.Algorithms.dll", + "lib/net463/System.Security.Cryptography.Algorithms.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Algorithms.dll", + "ref/net461/System.Security.Cryptography.Algorithms.dll", + "ref/net463/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "system.security.cryptography.algorithms.4.3.0.nupkg.sha512", + "system.security.cryptography.algorithms.nuspec" + ] + }, + "System.Security.Cryptography.Cng/4.3.0": { + "sha512": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", + "type": "package", + "path": "system.security.cryptography.cng/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/System.Security.Cryptography.Cng.dll", + "lib/net461/System.Security.Cryptography.Cng.dll", + "lib/net463/System.Security.Cryptography.Cng.dll", + "ref/net46/System.Security.Cryptography.Cng.dll", + "ref/net461/System.Security.Cryptography.Cng.dll", + "ref/net463/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", + "system.security.cryptography.cng.4.3.0.nupkg.sha512", + "system.security.cryptography.cng.nuspec" + ] + }, + "System.Security.Cryptography.Csp/4.3.0": { + "sha512": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", + "type": "package", + "path": "system.security.cryptography.csp/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Csp.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Csp.dll", + "ref/netstandard1.3/System.Security.Cryptography.Csp.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Csp.dll", + "runtimes/win/lib/netcore50/_._", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", + "system.security.cryptography.csp.4.3.0.nupkg.sha512", + "system.security.cryptography.csp.nuspec" + ] + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "sha512": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", + "type": "package", + "path": "system.security.cryptography.encoding/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Encoding.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Encoding.dll", + "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "system.security.cryptography.encoding.4.3.0.nupkg.sha512", + "system.security.cryptography.encoding.nuspec" + ] + }, + "System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", + "type": "package", + "path": "system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "ref/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "system.security.cryptography.openssl.nuspec" + ] + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "sha512": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", + "type": "package", + "path": "system.security.cryptography.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Primitives.dll", + "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Primitives.dll", + "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.security.cryptography.primitives.4.3.0.nupkg.sha512", + "system.security.cryptography.primitives.nuspec" + ] + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "sha512": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", + "type": "package", + "path": "system.security.cryptography.x509certificates/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.X509Certificates.dll", + "lib/net461/System.Security.Cryptography.X509Certificates.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.X509Certificates.dll", + "ref/net461/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", + "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512", + "system.security.cryptography.x509certificates.nuspec" + ] + }, + "System.Text.Encoding/4.3.0": { + "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "type": "package", + "path": "system.text.encoding/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.dll", + "ref/netcore50/System.Text.Encoding.xml", + "ref/netcore50/de/System.Text.Encoding.xml", + "ref/netcore50/es/System.Text.Encoding.xml", + "ref/netcore50/fr/System.Text.Encoding.xml", + "ref/netcore50/it/System.Text.Encoding.xml", + "ref/netcore50/ja/System.Text.Encoding.xml", + "ref/netcore50/ko/System.Text.Encoding.xml", + "ref/netcore50/ru/System.Text.Encoding.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.0/System.Text.Encoding.dll", + "ref/netstandard1.0/System.Text.Encoding.xml", + "ref/netstandard1.0/de/System.Text.Encoding.xml", + "ref/netstandard1.0/es/System.Text.Encoding.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.xml", + "ref/netstandard1.0/it/System.Text.Encoding.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.3/System.Text.Encoding.dll", + "ref/netstandard1.3/System.Text.Encoding.xml", + "ref/netstandard1.3/de/System.Text.Encoding.xml", + "ref/netstandard1.3/es/System.Text.Encoding.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.xml", + "ref/netstandard1.3/it/System.Text.Encoding.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.encoding.4.3.0.nupkg.sha512", + "system.text.encoding.nuspec" + ] + }, + "System.Text.Encoding.CodePages/4.5.1": { + "sha512": "4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==", + "type": "package", + "path": "system.text.encoding.codepages/4.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Text.Encoding.CodePages.dll", + "lib/net461/System.Text.Encoding.CodePages.dll", + "lib/netstandard1.3/System.Text.Encoding.CodePages.dll", + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/win/lib/net461/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netcoreapp2.0/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netstandard2.0/System.Text.Encoding.CodePages.dll", + "system.text.encoding.codepages.4.5.1.nupkg.sha512", + "system.text.encoding.codepages.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Text.Encoding.Extensions/4.3.0": { + "sha512": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", + "type": "package", + "path": "system.text.encoding.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.Extensions.dll", + "ref/netcore50/System.Text.Encoding.Extensions.xml", + "ref/netcore50/de/System.Text.Encoding.Extensions.xml", + "ref/netcore50/es/System.Text.Encoding.Extensions.xml", + "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", + "ref/netcore50/it/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", + "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", + "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.encoding.extensions.4.3.0.nupkg.sha512", + "system.text.encoding.extensions.nuspec" + ] + }, + "System.Text.RegularExpressions/4.3.0": { + "sha512": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", + "type": "package", + "path": "system.text.regularexpressions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Text.RegularExpressions.dll", + "lib/netcore50/System.Text.RegularExpressions.dll", + "lib/netstandard1.6/System.Text.RegularExpressions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.xml", + "ref/netcore50/de/System.Text.RegularExpressions.xml", + "ref/netcore50/es/System.Text.RegularExpressions.xml", + "ref/netcore50/fr/System.Text.RegularExpressions.xml", + "ref/netcore50/it/System.Text.RegularExpressions.xml", + "ref/netcore50/ja/System.Text.RegularExpressions.xml", + "ref/netcore50/ko/System.Text.RegularExpressions.xml", + "ref/netcore50/ru/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", + "ref/netcoreapp1.1/System.Text.RegularExpressions.dll", + "ref/netstandard1.0/System.Text.RegularExpressions.dll", + "ref/netstandard1.0/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/System.Text.RegularExpressions.dll", + "ref/netstandard1.3/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/System.Text.RegularExpressions.dll", + "ref/netstandard1.6/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.regularexpressions.4.3.0.nupkg.sha512", + "system.text.regularexpressions.nuspec" + ] + }, + "System.Threading/4.3.0": { + "sha512": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "type": "package", + "path": "system.threading/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Threading.dll", + "lib/netstandard1.3/System.Threading.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.dll", + "ref/netcore50/System.Threading.xml", + "ref/netcore50/de/System.Threading.xml", + "ref/netcore50/es/System.Threading.xml", + "ref/netcore50/fr/System.Threading.xml", + "ref/netcore50/it/System.Threading.xml", + "ref/netcore50/ja/System.Threading.xml", + "ref/netcore50/ko/System.Threading.xml", + "ref/netcore50/ru/System.Threading.xml", + "ref/netcore50/zh-hans/System.Threading.xml", + "ref/netcore50/zh-hant/System.Threading.xml", + "ref/netstandard1.0/System.Threading.dll", + "ref/netstandard1.0/System.Threading.xml", + "ref/netstandard1.0/de/System.Threading.xml", + "ref/netstandard1.0/es/System.Threading.xml", + "ref/netstandard1.0/fr/System.Threading.xml", + "ref/netstandard1.0/it/System.Threading.xml", + "ref/netstandard1.0/ja/System.Threading.xml", + "ref/netstandard1.0/ko/System.Threading.xml", + "ref/netstandard1.0/ru/System.Threading.xml", + "ref/netstandard1.0/zh-hans/System.Threading.xml", + "ref/netstandard1.0/zh-hant/System.Threading.xml", + "ref/netstandard1.3/System.Threading.dll", + "ref/netstandard1.3/System.Threading.xml", + "ref/netstandard1.3/de/System.Threading.xml", + "ref/netstandard1.3/es/System.Threading.xml", + "ref/netstandard1.3/fr/System.Threading.xml", + "ref/netstandard1.3/it/System.Threading.xml", + "ref/netstandard1.3/ja/System.Threading.xml", + "ref/netstandard1.3/ko/System.Threading.xml", + "ref/netstandard1.3/ru/System.Threading.xml", + "ref/netstandard1.3/zh-hans/System.Threading.xml", + "ref/netstandard1.3/zh-hant/System.Threading.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Threading.dll", + "system.threading.4.3.0.nupkg.sha512", + "system.threading.nuspec" + ] + }, + "System.Threading.Tasks/4.3.0": { + "sha512": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "type": "package", + "path": "system.threading.tasks/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.Tasks.dll", + "ref/netcore50/System.Threading.Tasks.xml", + "ref/netcore50/de/System.Threading.Tasks.xml", + "ref/netcore50/es/System.Threading.Tasks.xml", + "ref/netcore50/fr/System.Threading.Tasks.xml", + "ref/netcore50/it/System.Threading.Tasks.xml", + "ref/netcore50/ja/System.Threading.Tasks.xml", + "ref/netcore50/ko/System.Threading.Tasks.xml", + "ref/netcore50/ru/System.Threading.Tasks.xml", + "ref/netcore50/zh-hans/System.Threading.Tasks.xml", + "ref/netcore50/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.0/System.Threading.Tasks.dll", + "ref/netstandard1.0/System.Threading.Tasks.xml", + "ref/netstandard1.0/de/System.Threading.Tasks.xml", + "ref/netstandard1.0/es/System.Threading.Tasks.xml", + "ref/netstandard1.0/fr/System.Threading.Tasks.xml", + "ref/netstandard1.0/it/System.Threading.Tasks.xml", + "ref/netstandard1.0/ja/System.Threading.Tasks.xml", + "ref/netstandard1.0/ko/System.Threading.Tasks.xml", + "ref/netstandard1.0/ru/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.3/System.Threading.Tasks.dll", + "ref/netstandard1.3/System.Threading.Tasks.xml", + "ref/netstandard1.3/de/System.Threading.Tasks.xml", + "ref/netstandard1.3/es/System.Threading.Tasks.xml", + "ref/netstandard1.3/fr/System.Threading.Tasks.xml", + "ref/netstandard1.3/it/System.Threading.Tasks.xml", + "ref/netstandard1.3/ja/System.Threading.Tasks.xml", + "ref/netstandard1.3/ko/System.Threading.Tasks.xml", + "ref/netstandard1.3/ru/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.tasks.4.3.0.nupkg.sha512", + "system.threading.tasks.nuspec" + ] + }, + "System.Threading.Tasks.Extensions/4.5.3": { + "sha512": "+MvhNtcvIbqmhANyKu91jQnvIRVSTiaOiFNfKWwXGHG48YAb4I/TyH8spsySiPYla7gKal5ZnF3teJqZAximyQ==", + "type": "package", + "path": "system.threading.tasks.extensions/4.5.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/netcoreapp2.1/_._", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", + "lib/netstandard2.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard2.0/System.Threading.Tasks.Extensions.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netcoreapp2.1/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.tasks.extensions.4.5.3.nupkg.sha512", + "system.threading.tasks.extensions.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Threading.Thread/4.0.0": { + "sha512": "gIdJqDXlOr5W9zeqFErLw3dsOsiShSCYtF9SEHitACycmvNvY8odf9kiKvp6V7aibc8C4HzzNBkWXjyfn7plbQ==", + "type": "package", + "path": "system.threading.thread/4.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Threading.Thread.dll", + "lib/netcore50/_._", + "lib/netstandard1.3/System.Threading.Thread.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Threading.Thread.dll", + "ref/netstandard1.3/System.Threading.Thread.dll", + "ref/netstandard1.3/System.Threading.Thread.xml", + "ref/netstandard1.3/de/System.Threading.Thread.xml", + "ref/netstandard1.3/es/System.Threading.Thread.xml", + "ref/netstandard1.3/fr/System.Threading.Thread.xml", + "ref/netstandard1.3/it/System.Threading.Thread.xml", + "ref/netstandard1.3/ja/System.Threading.Thread.xml", + "ref/netstandard1.3/ko/System.Threading.Thread.xml", + "ref/netstandard1.3/ru/System.Threading.Thread.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Thread.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Thread.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.thread.4.0.0.nupkg.sha512", + "system.threading.thread.nuspec" + ] + }, + "System.Threading.ThreadPool/4.0.10": { + "sha512": "IMXgB5Vf/5Qw1kpoVgJMOvUO1l32aC+qC3OaIZjWJOjvcxuxNWOK2ZTWWYXfij22NHxT2j1yWX5vlAeQWld9vA==", + "type": "package", + "path": "system.threading.threadpool/4.0.10", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Threading.ThreadPool.dll", + "lib/netcore50/_._", + "lib/netstandard1.3/System.Threading.ThreadPool.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Threading.ThreadPool.dll", + "ref/netstandard1.3/System.Threading.ThreadPool.dll", + "ref/netstandard1.3/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/de/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/es/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/fr/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/it/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/ja/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/ko/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/ru/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/zh-hans/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/zh-hant/System.Threading.ThreadPool.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.threadpool.4.0.10.nupkg.sha512", + "system.threading.threadpool.nuspec" + ] + }, + "System.Threading.Timer/4.3.0": { + "sha512": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==", + "type": "package", + "path": "system.threading.timer/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net451/_._", + "lib/portable-net451+win81+wpa81/_._", + "lib/win81/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net451/_._", + "ref/netcore50/System.Threading.Timer.dll", + "ref/netcore50/System.Threading.Timer.xml", + "ref/netcore50/de/System.Threading.Timer.xml", + "ref/netcore50/es/System.Threading.Timer.xml", + "ref/netcore50/fr/System.Threading.Timer.xml", + "ref/netcore50/it/System.Threading.Timer.xml", + "ref/netcore50/ja/System.Threading.Timer.xml", + "ref/netcore50/ko/System.Threading.Timer.xml", + "ref/netcore50/ru/System.Threading.Timer.xml", + "ref/netcore50/zh-hans/System.Threading.Timer.xml", + "ref/netcore50/zh-hant/System.Threading.Timer.xml", + "ref/netstandard1.2/System.Threading.Timer.dll", + "ref/netstandard1.2/System.Threading.Timer.xml", + "ref/netstandard1.2/de/System.Threading.Timer.xml", + "ref/netstandard1.2/es/System.Threading.Timer.xml", + "ref/netstandard1.2/fr/System.Threading.Timer.xml", + "ref/netstandard1.2/it/System.Threading.Timer.xml", + "ref/netstandard1.2/ja/System.Threading.Timer.xml", + "ref/netstandard1.2/ko/System.Threading.Timer.xml", + "ref/netstandard1.2/ru/System.Threading.Timer.xml", + "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", + "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", + "ref/portable-net451+win81+wpa81/_._", + "ref/win81/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.timer.4.3.0.nupkg.sha512", + "system.threading.timer.nuspec" + ] + }, + "System.ValueTuple/4.5.0": { + "sha512": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==", + "type": "package", + "path": "system.valuetuple/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.ValueTuple.dll", + "lib/net461/System.ValueTuple.xml", + "lib/net47/System.ValueTuple.dll", + "lib/net47/System.ValueTuple.xml", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.0/System.ValueTuple.dll", + "lib/netstandard1.0/System.ValueTuple.xml", + "lib/netstandard2.0/_._", + "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", + "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.xml", + "lib/uap10.0.16299/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net461/System.ValueTuple.dll", + "ref/net47/System.ValueTuple.dll", + "ref/netcoreapp2.0/_._", + "ref/netstandard2.0/_._", + "ref/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", + "ref/uap10.0.16299/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.valuetuple.4.5.0.nupkg.sha512", + "system.valuetuple.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Xml.ReaderWriter/4.3.0": { + "sha512": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", + "type": "package", + "path": "system.xml.readerwriter/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net46/System.Xml.ReaderWriter.dll", + "lib/netcore50/System.Xml.ReaderWriter.dll", + "lib/netstandard1.3/System.Xml.ReaderWriter.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/System.Xml.ReaderWriter.dll", + "ref/netcore50/System.Xml.ReaderWriter.dll", + "ref/netcore50/System.Xml.ReaderWriter.xml", + "ref/netcore50/de/System.Xml.ReaderWriter.xml", + "ref/netcore50/es/System.Xml.ReaderWriter.xml", + "ref/netcore50/fr/System.Xml.ReaderWriter.xml", + "ref/netcore50/it/System.Xml.ReaderWriter.xml", + "ref/netcore50/ja/System.Xml.ReaderWriter.xml", + "ref/netcore50/ko/System.Xml.ReaderWriter.xml", + "ref/netcore50/ru/System.Xml.ReaderWriter.xml", + "ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/System.Xml.ReaderWriter.dll", + "ref/netstandard1.0/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/de/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/es/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/it/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/System.Xml.ReaderWriter.dll", + "ref/netstandard1.3/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/de/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/es/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/it/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.xml.readerwriter.4.3.0.nupkg.sha512", + "system.xml.readerwriter.nuspec" + ] + }, + "System.Xml.XDocument/4.3.0": { + "sha512": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", + "type": "package", + "path": "system.xml.xdocument/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Xml.XDocument.dll", + "lib/netstandard1.3/System.Xml.XDocument.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Xml.XDocument.dll", + "ref/netcore50/System.Xml.XDocument.xml", + "ref/netcore50/de/System.Xml.XDocument.xml", + "ref/netcore50/es/System.Xml.XDocument.xml", + "ref/netcore50/fr/System.Xml.XDocument.xml", + "ref/netcore50/it/System.Xml.XDocument.xml", + "ref/netcore50/ja/System.Xml.XDocument.xml", + "ref/netcore50/ko/System.Xml.XDocument.xml", + "ref/netcore50/ru/System.Xml.XDocument.xml", + "ref/netcore50/zh-hans/System.Xml.XDocument.xml", + "ref/netcore50/zh-hant/System.Xml.XDocument.xml", + "ref/netstandard1.0/System.Xml.XDocument.dll", + "ref/netstandard1.0/System.Xml.XDocument.xml", + "ref/netstandard1.0/de/System.Xml.XDocument.xml", + "ref/netstandard1.0/es/System.Xml.XDocument.xml", + "ref/netstandard1.0/fr/System.Xml.XDocument.xml", + "ref/netstandard1.0/it/System.Xml.XDocument.xml", + "ref/netstandard1.0/ja/System.Xml.XDocument.xml", + "ref/netstandard1.0/ko/System.Xml.XDocument.xml", + "ref/netstandard1.0/ru/System.Xml.XDocument.xml", + "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", + "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", + "ref/netstandard1.3/System.Xml.XDocument.dll", + "ref/netstandard1.3/System.Xml.XDocument.xml", + "ref/netstandard1.3/de/System.Xml.XDocument.xml", + "ref/netstandard1.3/es/System.Xml.XDocument.xml", + "ref/netstandard1.3/fr/System.Xml.XDocument.xml", + "ref/netstandard1.3/it/System.Xml.XDocument.xml", + "ref/netstandard1.3/ja/System.Xml.XDocument.xml", + "ref/netstandard1.3/ko/System.Xml.XDocument.xml", + "ref/netstandard1.3/ru/System.Xml.XDocument.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.xml.xdocument.4.3.0.nupkg.sha512", + "system.xml.xdocument.nuspec" + ] + }, + "System.Xml.XmlDocument/4.3.0": { + "sha512": "lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==", + "type": "package", + "path": "system.xml.xmldocument/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Xml.XmlDocument.dll", + "lib/netstandard1.3/System.Xml.XmlDocument.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Xml.XmlDocument.dll", + "ref/netstandard1.3/System.Xml.XmlDocument.dll", + "ref/netstandard1.3/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/de/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/es/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/fr/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/it/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/ja/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/ko/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/ru/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XmlDocument.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.xml.xmldocument.4.3.0.nupkg.sha512", + "system.xml.xmldocument.nuspec" + ] + }, + "System.Xml.XmlSerializer/4.0.11": { + "sha512": "FrazwwqfIXTfq23mfv4zH+BjqkSFNaNFBtjzu3I9NRmG8EELYyrv/fJnttCIwRMFRR/YKXF1hmsMmMEnl55HGw==", + "type": "package", + "path": "system.xml.xmlserializer/4.0.11", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Xml.XmlSerializer.dll", + "lib/netstandard1.3/System.Xml.XmlSerializer.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Xml.XmlSerializer.dll", + "ref/netcore50/System.Xml.XmlSerializer.xml", + "ref/netcore50/de/System.Xml.XmlSerializer.xml", + "ref/netcore50/es/System.Xml.XmlSerializer.xml", + "ref/netcore50/fr/System.Xml.XmlSerializer.xml", + "ref/netcore50/it/System.Xml.XmlSerializer.xml", + "ref/netcore50/ja/System.Xml.XmlSerializer.xml", + "ref/netcore50/ko/System.Xml.XmlSerializer.xml", + "ref/netcore50/ru/System.Xml.XmlSerializer.xml", + "ref/netcore50/zh-hans/System.Xml.XmlSerializer.xml", + "ref/netcore50/zh-hant/System.Xml.XmlSerializer.xml", + "ref/netstandard1.0/System.Xml.XmlSerializer.dll", + "ref/netstandard1.0/System.Xml.XmlSerializer.xml", + "ref/netstandard1.0/de/System.Xml.XmlSerializer.xml", + "ref/netstandard1.0/es/System.Xml.XmlSerializer.xml", + "ref/netstandard1.0/fr/System.Xml.XmlSerializer.xml", + "ref/netstandard1.0/it/System.Xml.XmlSerializer.xml", + "ref/netstandard1.0/ja/System.Xml.XmlSerializer.xml", + "ref/netstandard1.0/ko/System.Xml.XmlSerializer.xml", + "ref/netstandard1.0/ru/System.Xml.XmlSerializer.xml", + "ref/netstandard1.0/zh-hans/System.Xml.XmlSerializer.xml", + "ref/netstandard1.0/zh-hant/System.Xml.XmlSerializer.xml", + "ref/netstandard1.3/System.Xml.XmlSerializer.dll", + "ref/netstandard1.3/System.Xml.XmlSerializer.xml", + "ref/netstandard1.3/de/System.Xml.XmlSerializer.xml", + "ref/netstandard1.3/es/System.Xml.XmlSerializer.xml", + "ref/netstandard1.3/fr/System.Xml.XmlSerializer.xml", + "ref/netstandard1.3/it/System.Xml.XmlSerializer.xml", + "ref/netstandard1.3/ja/System.Xml.XmlSerializer.xml", + "ref/netstandard1.3/ko/System.Xml.XmlSerializer.xml", + "ref/netstandard1.3/ru/System.Xml.XmlSerializer.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XmlSerializer.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XmlSerializer.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Xml.XmlSerializer.dll", + "system.xml.xmlserializer.4.0.11.nupkg.sha512", + "system.xml.xmlserializer.nuspec" + ] + }, + "System.Xml.XPath/4.0.1": { + "sha512": "UWd1H+1IJ9Wlq5nognZ/XJdyj8qPE4XufBUkAW59ijsCPjZkZe0MUzKKJFBr+ZWBe5Wq1u1d5f2CYgE93uH7DA==", + "type": "package", + "path": "system.xml.xpath/4.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Xml.XPath.dll", + "lib/netstandard1.3/System.Xml.XPath.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Xml.XPath.dll", + "ref/netstandard1.3/System.Xml.XPath.dll", + "ref/netstandard1.3/System.Xml.XPath.xml", + "ref/netstandard1.3/de/System.Xml.XPath.xml", + "ref/netstandard1.3/es/System.Xml.XPath.xml", + "ref/netstandard1.3/fr/System.Xml.XPath.xml", + "ref/netstandard1.3/it/System.Xml.XPath.xml", + "ref/netstandard1.3/ja/System.Xml.XPath.xml", + "ref/netstandard1.3/ko/System.Xml.XPath.xml", + "ref/netstandard1.3/ru/System.Xml.XPath.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XPath.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XPath.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.xml.xpath.4.0.1.nupkg.sha512", + "system.xml.xpath.nuspec" + ] + }, + "System.Xml.XPath.XmlDocument/4.0.1": { + "sha512": "Zm2BdeanuncYs3NhCj4c9e1x3EXFzFBVv2wPEc/Dj4ZbI9R8ecLSR5frAsx4zJCPBtKQreQ7Q/KxJEohJZbfzA==", + "type": "package", + "path": "system.xml.xpath.xmldocument/4.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/netstandard1.3/System.Xml.XPath.XmlDocument.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netstandard1.3/System.Xml.XPath.XmlDocument.dll", + "ref/netstandard1.3/System.Xml.XPath.XmlDocument.xml", + "ref/netstandard1.3/de/System.Xml.XPath.XmlDocument.xml", + "ref/netstandard1.3/es/System.Xml.XPath.XmlDocument.xml", + "ref/netstandard1.3/fr/System.Xml.XPath.XmlDocument.xml", + "ref/netstandard1.3/it/System.Xml.XPath.XmlDocument.xml", + "ref/netstandard1.3/ja/System.Xml.XPath.XmlDocument.xml", + "ref/netstandard1.3/ko/System.Xml.XPath.XmlDocument.xml", + "ref/netstandard1.3/ru/System.Xml.XPath.XmlDocument.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XPath.XmlDocument.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XPath.XmlDocument.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.xml.xpath.xmldocument.4.0.1.nupkg.sha512", + "system.xml.xpath.xmldocument.nuspec" + ] + }, + "JsonApiDotNetCore.MongoDb/1.0.0": { + "type": "project", + "path": "../../src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj", + "msbuildProject": "../../src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj" + } + }, + "projectFileDependencyGroups": { + ".NETCoreApp,Version=v3.1": [ + "JsonApiDotNetCore.MongoDb >= 1.0.0", + "MSTest.TestAdapter >= 2.0.0", + "MSTest.TestFramework >= 2.0.0", + "Microsoft.NET.Test.Sdk >= 16.2.0", + "Moq >= 4.14.6", + "coverlet.collector >= 1.0.1" + ] + }, + "packageFolders": { + "/Users/mrnkr/.nuget/packages/": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj", + "projectName": "JsonApiDotNetCore.MongoDb.UnitTests", + "projectPath": "/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj", + "packagesPath": "/Users/mrnkr/.nuget/packages/", + "outputPath": "/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/Users/mrnkr/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "netcoreapp3.1" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netcoreapp3.1": { + "projectReferences": { + "/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj": { + "projectPath": "/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "netcoreapp3.1": { + "dependencies": { + "MSTest.TestAdapter": { + "target": "Package", + "version": "[2.0.0, )" + }, + "MSTest.TestFramework": { + "target": "Package", + "version": "[2.0.0, )" + }, + "Microsoft.NET.Test.Sdk": { + "target": "Package", + "version": "[16.2.0, )" + }, + "Moq": { + "target": "Package", + "version": "[4.14.6, )" + }, + "coverlet.collector": { + "target": "Package", + "version": "[1.0.1, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/3.1.100/RuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/test/UnitTests/.gitignore b/test/UnitTests/.gitignore deleted file mode 100644 index 0ca27f0..0000000 --- a/test/UnitTests/.gitignore +++ /dev/null @@ -1,234 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -build/ -bld/ -[Bb]in/ -[Oo]bj/ - -# Visual Studio 2015 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# DNX -project.lock.json -artifacts/ - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# TODO: Comment the next line if you want to checkin your web deploy settings -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Microsoft Azure ApplicationInsights config file -ApplicationInsights.config - -# Windows Store app package directory -AppPackages/ -BundleArtifacts/ - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.pfx -*.publishsettings -node_modules/ -orleans.codegen.cs - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe - -# FAKE - F# Make -.fake/ diff --git a/test/UnitTests/UnitTests.csproj b/test/UnitTests/UnitTests.csproj deleted file mode 100644 index e5ff8f6..0000000 --- a/test/UnitTests/UnitTests.csproj +++ /dev/null @@ -1,20 +0,0 @@ - - - - netcoreapp2.0 - - false - - - - - - - - - - - - - - From a6e06e6bbe1b6370a66f6e8041ff1b63dbe07116 Mon Sep 17 00:00:00 2001 From: Alvaro Nicoli Date: Tue, 6 Oct 2020 00:02:32 -0300 Subject: [PATCH 02/18] feature: tests for CountAsync, CreateAsync and DeleteAsync --- .gitignore | 94 +- .../Data/MongoEntityRepository.cs | 4 +- .../Book.cs | 7 +- .../MongoEntityRepositoryTest.cs | 175 + ...CoreApp,Version=v3.0.AssemblyAttributes.cs | 4 - ...tNetCore.MongoDb.UnitTests.AssemblyInfo.cs | 23 - ...MongoDb.UnitTests.AssemblyInfoInputs.cache | 1 - ...iDotNetCore.MongoDb.UnitTests.assets.cache | Bin 118268 -> 0 bytes ...CoreApp,Version=v3.1.AssemblyAttributes.cs | 4 - ...tNetCore.MongoDb.UnitTests.AssemblyInfo.cs | 23 - ...MongoDb.UnitTests.AssemblyInfoInputs.cache | 1 - ...iDotNetCore.MongoDb.UnitTests.assets.cache | Bin 102825 -> 0 bytes ...Db.UnitTests.csprojAssemblyReference.cache | Bin 13699 -> 0 bytes ...tCore.MongoDb.UnitTests.csproj.nuget.cache | 5 - ...MongoDb.UnitTests.csproj.nuget.dgspec.json | 144 - ...ore.MongoDb.UnitTests.csproj.nuget.g.props | 20 - ...e.MongoDb.UnitTests.csproj.nuget.g.targets | 11 - .../obj/project.assets.json | 9033 ----------------- 18 files changed, 271 insertions(+), 9278 deletions(-) create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs delete mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/.NETCoreApp,Version=v3.0.AssemblyAttributes.cs delete mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs delete mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache delete mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.assets.cache delete mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/.NETCoreApp,Version=v3.1.AssemblyAttributes.cs delete mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs delete mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache delete mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.assets.cache delete mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.csprojAssemblyReference.cache delete mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/JsonApiDotNetCore.MongoDb.UnitTests.csproj.nuget.cache delete mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/JsonApiDotNetCore.MongoDb.UnitTests.csproj.nuget.dgspec.json delete mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/JsonApiDotNetCore.MongoDb.UnitTests.csproj.nuget.g.props delete mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/JsonApiDotNetCore.MongoDb.UnitTests.csproj.nuget.g.targets delete mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/obj/project.assets.json diff --git a/.gitignore b/.gitignore index cd9f35a..1e7e35a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,90 @@ -\.vs/ +# Created by https://www.toptal.com/developers/gitignore/api/dotnetcore,vscode,macos,linux,windows +# Edit at https://www.toptal.com/developers/gitignore?templates=dotnetcore,vscode,macos,linux,windows -*.user -.couscous/ -docs/Template-Dark/ -.idea/ \ No newline at end of file +### DotnetCore ### +# .NET Core build folders +bin/ +obj/ + +# Common node modules locations +/node_modules +/wwwroot/node_modules + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### vscode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.toptal.com/developers/gitignore/api/dotnetcore,vscode,macos,linux,windows diff --git a/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs b/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs index 1aa2c59..5862720 100644 --- a/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs +++ b/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs @@ -19,7 +19,7 @@ public class MongoEntityRepository : IResourceRepository where TResource : class, IIdentifiable { - private readonly MongoDatabaseBase db; + private readonly IMongoDatabase db; private readonly string collectionName; private readonly ITargetedFields targetedFields; private readonly IResourceGraph resourceGraph; @@ -27,7 +27,7 @@ public class MongoEntityRepository private readonly IEnumerable constraintProviders; public MongoEntityRepository( - MongoDatabaseBase db, + IMongoDatabase db, string collectionName, ITargetedFields targetedFields, IResourceGraph resourceGraph, diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/Book.cs b/test/JsonApiDotNetCore.MongoDb.UnitTests/Book.cs index 7f32e0b..6ce2204 100644 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/Book.cs +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/Book.cs @@ -6,12 +6,12 @@ namespace JsonApiDotNetCore.MongoDb.UnitTests.Models { - public sealed class Book : Identifiable + public sealed class Book : IIdentifiable { [BsonId] [BsonRepresentation(BsonType.ObjectId)] [Attr] - public override string Id { get; set; } + public string Id { get; set; } [Attr] public string Name { get; set; } @@ -24,5 +24,8 @@ public sealed class Book : Identifiable [Attr] public string Author { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } } } diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs b/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs new file mode 100644 index 0000000..a9218f4 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs @@ -0,0 +1,175 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.MongoDb.Data; +using JsonApiDotNetCore.MongoDb.UnitTests.Models; +using JsonApiDotNetCore.Queries; +using JsonApiDotNetCore.Queries.Expressions; +using JsonApiDotNetCore.Repositories; +using JsonApiDotNetCore.Resources; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MongoDB.Driver; +using Moq; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace JsonApiDotNetCore.MongoDb.UnitTests +{ + [TestClass] + public class MongoEntityRepositoryTests + { + private IResourceRepository Repository { get; set; } + private IMongoDatabase Database { get; set; } + + private IMongoCollection Books => Database.GetCollection("books"); + + [TestInitialize] + public void BeforeEach() + { + var client = new MongoClient("mongodb://localhost:27017"); + Database = client.GetDatabase("JsonApiDotNet_MongoDb_Test"); + + var targetedFields = new Mock(); + var resourceGraph = new Mock(); + resourceGraph.Setup(g => g.GetResourceContext()).Returns(new Mock().Object); + var resourceFactory = new Mock(); + var constraintProviders = new List(); + + Repository = new MongoEntityRepository( + Database, + collectionName: "books", + targetedFields.Object, + resourceGraph.Object, + resourceFactory.Object, + constraintProviders); + } + + [TestCleanup] + public async Task AfterEach() + { + await Books.DeleteManyAsync(Builders.Filter.Empty); + } + + [TestMethod] + public async Task ShouldCountZero() + { + var result = await Repository.CountAsync( + new ComparisonExpression( + ComparisonOperator.Equals, + new LiteralConstantExpression(bool.FalseString), + new LiteralConstantExpression(bool.FalseString))); + + Assert.AreEqual(0, result); + } + + [TestMethod] + public async Task ShouldCountThree() + { + for (var i = 0; i < 3; i++) + { + var book = new Book + { + Name = $"Book {i + 1}", + Author = $"Author {i + 1}", + Category = $"Cat {i + 1}", + Price = 14.99M, + }; + + await Books.InsertOneAsync(book); + } + + var result = await Repository.CountAsync( + new ComparisonExpression( + ComparisonOperator.Equals, + new LiteralConstantExpression(bool.FalseString), + new LiteralConstantExpression(bool.FalseString))); + + Assert.AreEqual(3, result); + } + + [TestMethod] + public async Task ShouldSaveDocument() + { + var book = new Book + { + Name = "Harry Potter and the Deathly Hallows", + Author = "JK Rowling", + Category = "Adventure", + Price = 14.99M, + }; + + await Repository.CreateAsync(book); + + var query = Books.AsQueryable(); + var saved = await query.FirstOrDefaultAsync(); + + Assert.AreEqual(book.Name, saved.Name); + } + + [TestMethod] + public async Task ShouldGenerateObjectIdForNewDocument() + { + var book = new Book + { + Name = "Harry Potter and the Deathly Hallows", + Author = "JK Rowling", + Category = "Adventure", + Price = 14.99M, + }; + + await Repository.CreateAsync(book); + + var query = Books.AsQueryable(); + var saved = await query.FirstOrDefaultAsync(); + + Assert.IsNotNull(saved.Id); + } + + [TestMethod] + public async Task ShouldReturnTrue() + { + var book = new Book + { + Name = "Basic Philosophy", + Author = "Some boring philosopher", + Category = "Philosophy", + Price = 2.00M, + }; + + await Books.InsertOneAsync(book); + + var query = Books.AsQueryable(); + var saved = await query.FirstOrDefaultAsync(); + + var result = await Repository.DeleteAsync(saved.Id); + Assert.IsTrue(result); + } + + [TestMethod] + public async Task ShouldDeleteDocument() + { + var book = new Book + { + Name = "Basic Philosophy", + Author = "Some boring philosopher", + Category = "Philosophy", + Price = 2.00M, + }; + + await Books.InsertOneAsync(book); + + var query = Books.AsQueryable(); + var saved = await query.FirstOrDefaultAsync(); + + await Repository.DeleteAsync(saved.Id); + + Assert.IsFalse(query.Any(b => b.Id == saved.Id)); + } + + [TestMethod] + public async Task ShouldReturnFalse() + { + var result = await Repository.DeleteAsync("5f67c7718b884bb81fb0812e"); + Assert.IsFalse(result); + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/.NETCoreApp,Version=v3.0.AssemblyAttributes.cs b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/.NETCoreApp,Version=v3.0.AssemblyAttributes.cs deleted file mode 100644 index e7801f1..0000000 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/.NETCoreApp,Version=v3.0.AssemblyAttributes.cs +++ /dev/null @@ -1,4 +0,0 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v3.0", FrameworkDisplayName = "")] diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs deleted file mode 100644 index c4881ce..0000000 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("JsonApiDotNetCore.MongoDb.UnitTests")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] -[assembly: System.Reflection.AssemblyProductAttribute("JsonApiDotNetCore.MongoDb.UnitTests")] -[assembly: System.Reflection.AssemblyTitleAttribute("JsonApiDotNetCore.MongoDb.UnitTests")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] - -// Generated by the MSBuild WriteCodeFragment class. - diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache deleted file mode 100644 index 164c2af..0000000 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache +++ /dev/null @@ -1 +0,0 @@ -b69971194844ff90216f6a419b717bfb1860f7a8 diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.assets.cache b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.0/JsonApiDotNetCore.MongoDb.UnitTests.assets.cache deleted file mode 100644 index de0fe0f5df2044a8ee7b798c79c610a4ca7fc669..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118268 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 -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v3.1", FrameworkDisplayName = "")] diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs deleted file mode 100644 index c4881ce..0000000 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfo.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("JsonApiDotNetCore.MongoDb.UnitTests")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] -[assembly: System.Reflection.AssemblyProductAttribute("JsonApiDotNetCore.MongoDb.UnitTests")] -[assembly: System.Reflection.AssemblyTitleAttribute("JsonApiDotNetCore.MongoDb.UnitTests")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] - -// Generated by the MSBuild WriteCodeFragment class. - diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache deleted file mode 100644 index 164c2af..0000000 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.AssemblyInfoInputs.cache +++ /dev/null @@ -1 +0,0 @@ -b69971194844ff90216f6a419b717bfb1860f7a8 diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.assets.cache b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.assets.cache deleted file mode 100644 index 32f8d23ad1868dca4db62663ec6b319085c7ffbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102825 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 z - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - /Users/mrnkr/.nuget/packages/ - /Users/mrnkr/.nuget/packages/ - PackageReference - 5.4.0 - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - - - - - \ No newline at end of file diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/JsonApiDotNetCore.MongoDb.UnitTests.csproj.nuget.g.targets b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/JsonApiDotNetCore.MongoDb.UnitTests.csproj.nuget.g.targets deleted file mode 100644 index 015a19d..0000000 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/JsonApiDotNetCore.MongoDb.UnitTests.csproj.nuget.g.targets +++ /dev/null @@ -1,11 +0,0 @@ - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - - - - - \ No newline at end of file diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/project.assets.json b/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/project.assets.json deleted file mode 100644 index 265b64a..0000000 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/project.assets.json +++ /dev/null @@ -1,9033 +0,0 @@ -{ - "version": 3, - "targets": { - ".NETCoreApp,Version=v3.1": { - "Ben.Demystifier/0.1.6": { - "type": "package", - "dependencies": { - "System.Reflection.Metadata": "1.6.0", - "System.Threading.Tasks.Extensions": "4.5.3" - }, - "compile": { - "lib/netstandard2.0/Ben.Demystifier.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Ben.Demystifier.dll": {} - } - }, - "Castle.Core/4.4.0": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.6.1", - "System.Collections.Specialized": "4.3.0", - "System.ComponentModel": "4.3.0", - "System.ComponentModel.TypeConverter": "4.3.0", - "System.Diagnostics.TraceSource": "4.3.0", - "System.Dynamic.Runtime": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.TypeExtensions": "4.3.0", - "System.Xml.XmlDocument": "4.3.0" - }, - "compile": { - "lib/netstandard1.5/Castle.Core.dll": {} - }, - "runtime": { - "lib/netstandard1.5/Castle.Core.dll": {} - } - }, - "coverlet.collector/1.0.1": { - "type": "package", - "build": { - "build/netstandard1.0/coverlet.collector.targets": {} - } - }, - "DnsClient/1.3.1": { - "type": "package", - "compile": { - "lib/netstandard2.1/DnsClient.dll": {} - }, - "runtime": { - "lib/netstandard2.1/DnsClient.dll": {} - } - }, - "Humanizer/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core.af": "2.7.9", - "Humanizer.Core.ar": "2.7.9", - "Humanizer.Core.bg": "2.7.9", - "Humanizer.Core.bn-BD": "2.7.9", - "Humanizer.Core.cs": "2.7.9", - "Humanizer.Core.da": "2.7.9", - "Humanizer.Core.de": "2.7.9", - "Humanizer.Core.el": "2.7.9", - "Humanizer.Core.es": "2.7.9", - "Humanizer.Core.fa": "2.7.9", - "Humanizer.Core.fi-FI": "2.7.9", - "Humanizer.Core.fr": "2.7.9", - "Humanizer.Core.fr-BE": "2.7.9", - "Humanizer.Core.he": "2.7.9", - "Humanizer.Core.hr": "2.7.9", - "Humanizer.Core.hu": "2.7.9", - "Humanizer.Core.id": "2.7.9", - "Humanizer.Core.it": "2.7.9", - "Humanizer.Core.ja": "2.7.9", - "Humanizer.Core.lv": "2.7.9", - "Humanizer.Core.ms-MY": "2.7.9", - "Humanizer.Core.mt": "2.7.9", - "Humanizer.Core.nb": "2.7.9", - "Humanizer.Core.nb-NO": "2.7.9", - "Humanizer.Core.nl": "2.7.9", - "Humanizer.Core.pl": "2.7.9", - "Humanizer.Core.pt": "2.7.9", - "Humanizer.Core.ro": "2.7.9", - "Humanizer.Core.ru": "2.7.9", - "Humanizer.Core.sk": "2.7.9", - "Humanizer.Core.sl": "2.7.9", - "Humanizer.Core.sr": "2.7.9", - "Humanizer.Core.sr-Latn": "2.7.9", - "Humanizer.Core.sv": "2.7.9", - "Humanizer.Core.tr": "2.7.9", - "Humanizer.Core.uk": "2.7.9", - "Humanizer.Core.uz-Cyrl-UZ": "2.7.9", - "Humanizer.Core.uz-Latn-UZ": "2.7.9", - "Humanizer.Core.vi": "2.7.9", - "Humanizer.Core.zh-CN": "2.7.9", - "Humanizer.Core.zh-Hans": "2.7.9", - "Humanizer.Core.zh-Hant": "2.7.9" - } - }, - "Humanizer.Core/2.7.9": { - "type": "package", - "compile": { - "lib/netstandard2.0/Humanizer.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Humanizer.dll": {} - } - }, - "Humanizer.Core.af/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/af/Humanizer.resources.dll": { - "locale": "af" - } - } - }, - "Humanizer.Core.ar/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/ar/Humanizer.resources.dll": { - "locale": "ar" - } - } - }, - "Humanizer.Core.bg/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/bg/Humanizer.resources.dll": { - "locale": "bg" - } - } - }, - "Humanizer.Core.bn-BD/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/bn-BD/Humanizer.resources.dll": { - "locale": "bn-BD" - } - } - }, - "Humanizer.Core.cs/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/cs/Humanizer.resources.dll": { - "locale": "cs" - } - } - }, - "Humanizer.Core.da/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/da/Humanizer.resources.dll": { - "locale": "da" - } - } - }, - "Humanizer.Core.de/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/de/Humanizer.resources.dll": { - "locale": "de" - } - } - }, - "Humanizer.Core.el/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/el/Humanizer.resources.dll": { - "locale": "el" - } - } - }, - "Humanizer.Core.es/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/es/Humanizer.resources.dll": { - "locale": "es" - } - } - }, - "Humanizer.Core.fa/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/fa/Humanizer.resources.dll": { - "locale": "fa" - } - } - }, - "Humanizer.Core.fi-FI/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/fi-FI/Humanizer.resources.dll": { - "locale": "fi-FI" - } - } - }, - "Humanizer.Core.fr/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/fr/Humanizer.resources.dll": { - "locale": "fr" - } - } - }, - "Humanizer.Core.fr-BE/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/fr-BE/Humanizer.resources.dll": { - "locale": "fr-BE" - } - } - }, - "Humanizer.Core.he/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/he/Humanizer.resources.dll": { - "locale": "he" - } - } - }, - "Humanizer.Core.hr/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/hr/Humanizer.resources.dll": { - "locale": "hr" - } - } - }, - "Humanizer.Core.hu/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/hu/Humanizer.resources.dll": { - "locale": "hu" - } - } - }, - "Humanizer.Core.id/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/id/Humanizer.resources.dll": { - "locale": "id" - } - } - }, - "Humanizer.Core.it/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/it/Humanizer.resources.dll": { - "locale": "it" - } - } - }, - "Humanizer.Core.ja/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/ja/Humanizer.resources.dll": { - "locale": "ja" - } - } - }, - "Humanizer.Core.lv/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/lv/Humanizer.resources.dll": { - "locale": "lv" - } - } - }, - "Humanizer.Core.ms-MY/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/ms-MY/Humanizer.resources.dll": { - "locale": "ms-MY" - } - } - }, - "Humanizer.Core.mt/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/mt/Humanizer.resources.dll": { - "locale": "mt" - } - } - }, - "Humanizer.Core.nb/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/nb/Humanizer.resources.dll": { - "locale": "nb" - } - } - }, - "Humanizer.Core.nb-NO/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/nb-NO/Humanizer.resources.dll": { - "locale": "nb-NO" - } - } - }, - "Humanizer.Core.nl/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/nl/Humanizer.resources.dll": { - "locale": "nl" - } - } - }, - "Humanizer.Core.pl/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/pl/Humanizer.resources.dll": { - "locale": "pl" - } - } - }, - "Humanizer.Core.pt/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/pt/Humanizer.resources.dll": { - "locale": "pt" - } - } - }, - "Humanizer.Core.ro/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/ro/Humanizer.resources.dll": { - "locale": "ro" - } - } - }, - "Humanizer.Core.ru/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/ru/Humanizer.resources.dll": { - "locale": "ru" - } - } - }, - "Humanizer.Core.sk/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/sk/Humanizer.resources.dll": { - "locale": "sk" - } - } - }, - "Humanizer.Core.sl/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/sl/Humanizer.resources.dll": { - "locale": "sl" - } - } - }, - "Humanizer.Core.sr/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/sr/Humanizer.resources.dll": { - "locale": "sr" - } - } - }, - "Humanizer.Core.sr-Latn/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/sr-Latn/Humanizer.resources.dll": { - "locale": "sr-Latn" - } - } - }, - "Humanizer.Core.sv/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/sv/Humanizer.resources.dll": { - "locale": "sv" - } - } - }, - "Humanizer.Core.tr/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/tr/Humanizer.resources.dll": { - "locale": "tr" - } - } - }, - "Humanizer.Core.uk/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/uk/Humanizer.resources.dll": { - "locale": "uk" - } - } - }, - "Humanizer.Core.uz-Cyrl-UZ/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/uz-Cyrl-UZ/Humanizer.resources.dll": { - "locale": "uz-Cyrl-UZ" - } - } - }, - "Humanizer.Core.uz-Latn-UZ/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/uz-Latn-UZ/Humanizer.resources.dll": { - "locale": "uz-Latn-UZ" - } - } - }, - "Humanizer.Core.vi/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/vi/Humanizer.resources.dll": { - "locale": "vi" - } - } - }, - "Humanizer.Core.zh-CN/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/zh-CN/Humanizer.resources.dll": { - "locale": "zh-CN" - } - } - }, - "Humanizer.Core.zh-Hans/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/zh-Hans/Humanizer.resources.dll": { - "locale": "zh-Hans" - } - } - }, - "Humanizer.Core.zh-Hant/2.7.9": { - "type": "package", - "dependencies": { - "Humanizer.Core": "[2.7.9]" - }, - "resource": { - "lib/netstandard2.0/zh-Hant/Humanizer.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "JsonApiDotNetCore/4.0.0-beta1": { - "type": "package", - "dependencies": { - "Ben.Demystifier": "0.1.6", - "Humanizer": "2.7.9", - "Microsoft.EntityFrameworkCore": "3.1.8", - "Newtonsoft.Json": "12.0.3", - "System.ValueTuple": "4.5.0" - }, - "compile": { - "lib/netcoreapp3.1/JsonApiDotNetCore.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/JsonApiDotNetCore.dll": {} - }, - "frameworkReferences": [ - "Microsoft.AspNetCore.App" - ] - }, - "Microsoft.Bcl.AsyncInterfaces/1.1.1": { - "type": "package", - "compile": { - "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {} - }, - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {} - } - }, - "Microsoft.Bcl.HashCode/1.1.0": { - "type": "package", - "compile": { - "ref/netcoreapp2.1/Microsoft.Bcl.HashCode.dll": {} - }, - "runtime": { - "lib/netcoreapp2.1/Microsoft.Bcl.HashCode.dll": {} - } - }, - "Microsoft.CodeCoverage/16.2.0": { - "type": "package", - "compile": { - "lib/netcoreapp1.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} - }, - "runtime": { - "lib/netcoreapp1.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} - }, - "build": { - "build/netstandard1.0/Microsoft.CodeCoverage.props": {}, - "build/netstandard1.0/Microsoft.CodeCoverage.targets": {} - } - }, - "Microsoft.EntityFrameworkCore/3.1.8": { - "type": "package", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "Microsoft.Bcl.HashCode": "1.1.0", - "Microsoft.EntityFrameworkCore.Abstractions": "3.1.8", - "Microsoft.EntityFrameworkCore.Analyzers": "3.1.8", - "Microsoft.Extensions.Caching.Memory": "3.1.8", - "Microsoft.Extensions.DependencyInjection": "3.1.8", - "Microsoft.Extensions.Logging": "3.1.8", - "System.Collections.Immutable": "1.7.1", - "System.ComponentModel.Annotations": "4.7.0", - "System.Diagnostics.DiagnosticSource": "4.7.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.EntityFrameworkCore.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.EntityFrameworkCore.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Abstractions/3.1.8": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Analyzers/3.1.8": { - "type": "package", - "compile": { - "lib/netstandard2.0/_._": {} - }, - "runtime": { - "lib/netstandard2.0/_._": {} - } - }, - "Microsoft.Extensions.Caching.Abstractions/3.1.8": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "3.1.8" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Caching.Memory/3.1.8": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "3.1.8", - "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.8", - "Microsoft.Extensions.Logging.Abstractions": "3.1.8", - "Microsoft.Extensions.Options": "3.1.8" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.dll": {} - } - }, - "Microsoft.Extensions.Configuration/3.1.8": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "3.1.8" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.dll": {} - } - }, - "Microsoft.Extensions.Configuration.Abstractions/3.1.8": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "3.1.8" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Configuration.Binder/3.1.8": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.8" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll": {} - } - }, - "Microsoft.Extensions.DependencyInjection/3.1.8": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.8" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.dll": {} - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/3.1.8": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Logging/3.1.8": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "3.1.8", - "Microsoft.Extensions.DependencyInjection": "3.1.8", - "Microsoft.Extensions.Logging.Abstractions": "3.1.8", - "Microsoft.Extensions.Options": "3.1.8" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.dll": {} - } - }, - "Microsoft.Extensions.Logging.Abstractions/3.1.8": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Options/3.1.8": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.8", - "Microsoft.Extensions.Primitives": "3.1.8" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Options.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Options.dll": {} - } - }, - "Microsoft.Extensions.Primitives/3.1.8": { - "type": "package", - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll": {} - } - }, - "Microsoft.NET.Test.Sdk/16.2.0": { - "type": "package", - "dependencies": { - "Microsoft.CodeCoverage": "16.2.0", - "Microsoft.TestPlatform.TestHost": "16.2.0" - }, - "build": { - "build/netcoreapp1.0/Microsoft.NET.Test.Sdk.props": {}, - "build/netcoreapp1.0/Microsoft.NET.Test.Sdk.targets": {} - }, - "buildMultiTargeting": { - "buildMultiTargeting/Microsoft.NET.Test.Sdk.props": {} - } - }, - "Microsoft.NETCore.Platforms/2.1.2": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.NETCore.Targets/1.1.0": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.TestPlatform.ObjectModel/16.2.0": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.6.0", - "System.ComponentModel.EventBasedAsync": "4.0.11", - "System.ComponentModel.TypeConverter": "4.1.0", - "System.Diagnostics.Process": "4.1.0", - "System.Diagnostics.TextWriterTraceListener": "4.0.0", - "System.Diagnostics.TraceSource": "4.0.0", - "System.Reflection.Metadata": "1.3.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0", - "System.Runtime.Loader": "4.0.0", - "System.Runtime.Serialization.Json": "4.0.2", - "System.Runtime.Serialization.Primitives": "4.1.1", - "System.Threading.Thread": "4.0.0", - "System.Xml.XPath.XmlDocument": "4.0.1" - }, - "compile": { - "lib/netstandard1.5/Microsoft.TestPlatform.CoreUtilities.dll": {}, - "lib/netstandard1.5/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, - "lib/netstandard1.5/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} - }, - "runtime": { - "lib/netstandard1.5/Microsoft.TestPlatform.CoreUtilities.dll": {}, - "lib/netstandard1.5/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, - "lib/netstandard1.5/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} - }, - "resource": { - "lib/netstandard1.5/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "cs" - }, - "lib/netstandard1.5/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "cs" - }, - "lib/netstandard1.5/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "de" - }, - "lib/netstandard1.5/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "de" - }, - "lib/netstandard1.5/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "es" - }, - "lib/netstandard1.5/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "es" - }, - "lib/netstandard1.5/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "fr" - }, - "lib/netstandard1.5/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "fr" - }, - "lib/netstandard1.5/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "it" - }, - "lib/netstandard1.5/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "it" - }, - "lib/netstandard1.5/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "ja" - }, - "lib/netstandard1.5/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "ja" - }, - "lib/netstandard1.5/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "ko" - }, - "lib/netstandard1.5/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "ko" - }, - "lib/netstandard1.5/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "pl" - }, - "lib/netstandard1.5/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "pl" - }, - "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "pt-BR" - }, - "lib/netstandard1.5/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "pt-BR" - }, - "lib/netstandard1.5/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "ru" - }, - "lib/netstandard1.5/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "ru" - }, - "lib/netstandard1.5/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "tr" - }, - "lib/netstandard1.5/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "tr" - }, - "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netstandard1.5/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "zh-Hant" - }, - "lib/netstandard1.5/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.TestPlatform.TestHost/16.2.0": { - "type": "package", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "16.2.0", - "Newtonsoft.Json": "9.0.1" - }, - "compile": { - "lib/netstandard1.5/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, - "lib/netstandard1.5/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, - "lib/netstandard1.5/Microsoft.TestPlatform.Utilities.dll": {}, - "lib/netstandard1.5/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, - "lib/netstandard1.5/testhost.dll": {} - }, - "runtime": { - "lib/netstandard1.5/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, - "lib/netstandard1.5/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, - "lib/netstandard1.5/Microsoft.TestPlatform.Utilities.dll": {}, - "lib/netstandard1.5/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, - "lib/netstandard1.5/testhost.dll": {} - }, - "resource": { - "lib/netstandard1.5/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "cs" - }, - "lib/netstandard1.5/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "cs" - }, - "lib/netstandard1.5/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "cs" - }, - "lib/netstandard1.5/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "de" - }, - "lib/netstandard1.5/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "de" - }, - "lib/netstandard1.5/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "de" - }, - "lib/netstandard1.5/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "es" - }, - "lib/netstandard1.5/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "es" - }, - "lib/netstandard1.5/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "es" - }, - "lib/netstandard1.5/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "fr" - }, - "lib/netstandard1.5/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "fr" - }, - "lib/netstandard1.5/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "fr" - }, - "lib/netstandard1.5/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "it" - }, - "lib/netstandard1.5/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "it" - }, - "lib/netstandard1.5/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "it" - }, - "lib/netstandard1.5/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "ja" - }, - "lib/netstandard1.5/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "ja" - }, - "lib/netstandard1.5/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "ja" - }, - "lib/netstandard1.5/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "ko" - }, - "lib/netstandard1.5/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "ko" - }, - "lib/netstandard1.5/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "ko" - }, - "lib/netstandard1.5/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "pl" - }, - "lib/netstandard1.5/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "pl" - }, - "lib/netstandard1.5/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "pl" - }, - "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "pt-BR" - }, - "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "pt-BR" - }, - "lib/netstandard1.5/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "pt-BR" - }, - "lib/netstandard1.5/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "ru" - }, - "lib/netstandard1.5/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "ru" - }, - "lib/netstandard1.5/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "ru" - }, - "lib/netstandard1.5/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "tr" - }, - "lib/netstandard1.5/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "tr" - }, - "lib/netstandard1.5/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "tr" - }, - "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netstandard1.5/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "zh-Hant" - }, - "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "zh-Hant" - }, - "lib/netstandard1.5/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.Win32.Primitives/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll": {} - } - }, - "Microsoft.Win32.Registry/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "MongoDB.Bson/2.11.2": { - "type": "package", - "compile": { - "lib/netstandard2.0/MongoDB.Bson.dll": {} - }, - "runtime": { - "lib/netstandard2.0/MongoDB.Bson.dll": {} - } - }, - "MongoDB.Driver/2.11.2": { - "type": "package", - "dependencies": { - "MongoDB.Bson": "2.11.2", - "MongoDB.Driver.Core": "2.11.2", - "MongoDB.Libmongocrypt": "1.0.0" - }, - "compile": { - "lib/netstandard2.0/MongoDB.Driver.dll": {} - }, - "runtime": { - "lib/netstandard2.0/MongoDB.Driver.dll": {} - } - }, - "MongoDB.Driver.Core/2.11.2": { - "type": "package", - "dependencies": { - "DnsClient": "1.3.1", - "MongoDB.Bson": "2.11.2", - "MongoDB.Libmongocrypt": "1.0.0", - "SharpCompress": "0.23.0", - "System.Buffers": "4.4.0" - }, - "compile": { - "lib/netstandard2.0/MongoDB.Driver.Core.dll": {} - }, - "runtime": { - "lib/netstandard2.0/MongoDB.Driver.Core.dll": {} - }, - "contentFiles": { - "contentFiles/any/any/_._": { - "buildAction": "None", - "codeLanguage": "any", - "copyToOutput": false - } - }, - "build": { - "build/_._": {} - }, - "runtimeTargets": { - "runtimes/win/native/libzstd.dll": { - "assetType": "native", - "rid": "win" - }, - "runtimes/win/native/snappy32.dll": { - "assetType": "native", - "rid": "win" - }, - "runtimes/win/native/snappy64.dll": { - "assetType": "native", - "rid": "win" - } - } - }, - "MongoDB.Libmongocrypt/1.0.0": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.6.1" - }, - "compile": { - "lib/netstandard1.5/MongoDB.Libmongocrypt.dll": {} - }, - "runtime": { - "lib/netstandard1.5/MongoDB.Libmongocrypt.dll": {} - }, - "build": { - "build/_._": {} - } - }, - "Moq/4.14.6": { - "type": "package", - "dependencies": { - "Castle.Core": "4.4.0", - "System.Threading.Tasks.Extensions": "4.5.1" - }, - "compile": { - "lib/netstandard2.0/Moq.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Moq.dll": {} - } - }, - "MSTest.TestAdapter/2.0.0": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.6.1", - "System.Diagnostics.TextWriterTraceListener": "4.3.0" - }, - "build": { - "build/netcoreapp1.0/MSTest.TestAdapter.props": {} - } - }, - "MSTest.TestFramework/2.0.0": { - "type": "package", - "compile": { - "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll": {}, - "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll": {}, - "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll": {} - } - }, - "NETStandard.Library/1.6.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.Win32.Primitives": "4.3.0", - "System.AppContext": "4.3.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Console": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.Compression": "4.3.0", - "System.IO.Compression.ZipFile": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Linq": "4.3.0", - "System.Linq.Expressions": "4.3.0", - "System.Net.Http": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Net.Sockets": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.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.InteropServices.RuntimeInformation": "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.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Timer": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XDocument": "4.3.0" - } - }, - "Newtonsoft.Json/12.0.3": { - "type": "package", - "compile": { - "lib/netstandard2.0/Newtonsoft.Json.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Newtonsoft.Json.dll": {} - } - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "debian.8-x64" - } - } - }, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "fedora.23-x64" - } - } - }, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "fedora.24-x64" - } - } - }, - "runtime.native.System/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.IO.Compression/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Net.Http/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "type": "package", - "dependencies": { - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "dependencies": { - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "opensuse.13.2-x64" - } - } - }, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "opensuse.42.1-x64" - } - } - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib": { - "assetType": "native", - "rid": "osx.10.10-x64" - } - } - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib": { - "assetType": "native", - "rid": "osx.10.10-x64" - } - } - }, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "rhel.7-x64" - } - } - }, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "ubuntu.14.04-x64" - } - } - }, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "ubuntu.16.04-x64" - } - } - }, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "ubuntu.16.10-x64" - } - } - }, - "SharpCompress/0.23.0": { - "type": "package", - "dependencies": { - "System.Text.Encoding.CodePages": "4.5.1" - }, - "compile": { - "lib/netstandard2.0/SharpCompress.dll": {} - }, - "runtime": { - "lib/netstandard2.0/SharpCompress.dll": {} - } - }, - "System.AppContext/4.3.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.6/System.AppContext.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.AppContext.dll": {} - } - }, - "System.Buffers/4.4.0": { - "type": "package", - "compile": { - "ref/netcoreapp2.0/_._": {} - }, - "runtime": { - "lib/netcoreapp2.0/_._": {} - } - }, - "System.Collections/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Collections.dll": {} - } - }, - "System.Collections.Concurrent/4.3.0": { - "type": "package", - "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" - }, - "compile": { - "ref/netstandard1.3/System.Collections.Concurrent.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Collections.Concurrent.dll": {} - } - }, - "System.Collections.Immutable/1.7.1": { - "type": "package", - "compile": { - "lib/netstandard2.0/System.Collections.Immutable.dll": {} - }, - "runtime": { - "lib/netstandard2.0/System.Collections.Immutable.dll": {} - } - }, - "System.Collections.NonGeneric/4.3.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "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" - }, - "compile": { - "ref/netstandard1.3/System.Collections.NonGeneric.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Collections.NonGeneric.dll": {} - } - }, - "System.Collections.Specialized/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections.NonGeneric": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Extensions": "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" - }, - "compile": { - "ref/netstandard1.3/System.Collections.Specialized.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Collections.Specialized.dll": {} - } - }, - "System.ComponentModel/4.3.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/System.ComponentModel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.ComponentModel.dll": {} - } - }, - "System.ComponentModel.Annotations/4.7.0": { - "type": "package", - "compile": { - "ref/netstandard2.1/System.ComponentModel.Annotations.dll": {} - }, - "runtime": { - "lib/netstandard2.1/System.ComponentModel.Annotations.dll": {} - } - }, - "System.ComponentModel.EventBasedAsync/4.0.11": { - "type": "package", - "dependencies": { - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.ComponentModel.EventBasedAsync.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.ComponentModel.EventBasedAsync.dll": {} - } - }, - "System.ComponentModel.Primitives/4.3.0": { - "type": "package", - "dependencies": { - "System.ComponentModel": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/System.ComponentModel.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.ComponentModel.Primitives.dll": {} - } - }, - "System.ComponentModel.TypeConverter/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Collections.NonGeneric": "4.3.0", - "System.Collections.Specialized": "4.3.0", - "System.ComponentModel": "4.3.0", - "System.ComponentModel.Primitives": "4.3.0", - "System.Globalization": "4.3.0", - "System.Linq": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "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" - }, - "compile": { - "ref/netstandard1.5/System.ComponentModel.TypeConverter.dll": {} - }, - "runtime": { - "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll": {} - } - }, - "System.Console/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Console.dll": {} - } - }, - "System.Diagnostics.Debug/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.Debug.dll": {} - } - }, - "System.Diagnostics.DiagnosticSource/4.7.1": { - "type": "package", - "compile": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} - } - }, - "System.Diagnostics.Process/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "Microsoft.Win32.Registry": "4.0.0", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Thread": "4.0.0", - "System.Threading.ThreadPool": "4.0.10", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.4/System.Diagnostics.Process.dll": {} - }, - "runtimeTargets": { - "runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll": { - "assetType": "runtime", - "rid": "linux" - }, - "runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll": { - "assetType": "runtime", - "rid": "osx" - }, - "runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Diagnostics.TextWriterTraceListener/4.3.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.TraceSource": "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" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.TextWriterTraceListener.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Diagnostics.TextWriterTraceListener.dll": {} - } - }, - "System.Diagnostics.Tools/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/System.Diagnostics.Tools.dll": {} - } - }, - "System.Diagnostics.TraceSource/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "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", - "runtime.native.System": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.TraceSource.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Diagnostics.Tracing/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.5/System.Diagnostics.Tracing.dll": {} - } - }, - "System.Dynamic.Runtime/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Linq": "4.3.0", - "System.Linq.Expressions": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "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" - }, - "compile": { - "ref/netstandard1.3/System.Dynamic.Runtime.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Dynamic.Runtime.dll": {} - } - }, - "System.Globalization/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.dll": {} - } - }, - "System.Globalization.Calendars/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.Calendars.dll": {} - } - }, - "System.Globalization.Extensions/4.3.0": { - "type": "package", - "dependencies": { - "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" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO/4.3.0": { - "type": "package", - "dependencies": { - "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" - }, - "compile": { - "ref/netstandard1.5/System.IO.dll": {} - } - }, - "System.IO.Compression/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Buffers": "4.3.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "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.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.IO.Compression": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.Compression.ZipFile/4.3.0": { - "type": "package", - "dependencies": { - "System.Buffers": "4.3.0", - "System.IO": "4.3.0", - "System.IO.Compression": "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.Text.Encoding": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.IO.Compression.ZipFile.dll": {} - } - }, - "System.IO.FileSystem/4.3.0": { - "type": "package", - "dependencies": { - "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" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.dll": {} - } - }, - "System.IO.FileSystem.Primitives/4.3.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} - } - }, - "System.Linq/4.3.0": { - "type": "package", - "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" - }, - "compile": { - "ref/netstandard1.6/System.Linq.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Linq.dll": {} - } - }, - "System.Linq.Expressions/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Linq": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Emit.Lightweight": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "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" - }, - "compile": { - "ref/netstandard1.6/System.Linq.Expressions.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Linq.Expressions.dll": {} - } - }, - "System.Net.Http/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "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.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Http.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Primitives/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Primitives.dll": {} - } - }, - "System.Net.Sockets/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Sockets.dll": {} - } - }, - "System.ObjectModel/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.ObjectModel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.ObjectModel.dll": {} - } - }, - "System.Private.DataContractSerialization/4.1.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "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.Runtime.Serialization.Primitives": "4.1.1", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XmlDocument": "4.0.1", - "System.Xml.XmlSerializer": "4.0.11" - }, - "compile": { - "ref/netstandard/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Private.DataContractSerialization.dll": {} - } - }, - "System.Reflection/4.3.0": { - "type": "package", - "dependencies": { - "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" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.dll": {} - } - }, - "System.Reflection.Emit/4.3.0": { - "type": "package", - "dependencies": { - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.1/System.Reflection.Emit.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.dll": {} - } - }, - "System.Reflection.Emit.ILGeneration/4.3.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {} - } - }, - "System.Reflection.Emit.Lightweight/4.3.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {} - } - }, - "System.Reflection.Extensions/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Extensions.dll": {} - } - }, - "System.Reflection.Metadata/1.6.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/System.Reflection.Metadata.dll": {} - }, - "runtime": { - "lib/netstandard2.0/System.Reflection.Metadata.dll": {} - } - }, - "System.Reflection.Primitives/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Primitives.dll": {} - } - }, - "System.Reflection.TypeExtensions/4.3.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll": {} - }, - "runtime": { - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {} - } - }, - "System.Resources.ResourceManager/4.3.0": { - "type": "package", - "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" - }, - "compile": { - "ref/netstandard1.0/System.Resources.ResourceManager.dll": {} - } - }, - "System.Runtime/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.dll": {} - } - }, - "System.Runtime.CompilerServices.Unsafe/4.5.2": { - "type": "package", - "compile": { - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {} - }, - "runtime": { - "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll": {} - } - }, - "System.Runtime.Extensions/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.Extensions.dll": {} - } - }, - "System.Runtime.Handles/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Handles.dll": {} - } - }, - "System.Runtime.InteropServices/4.3.0": { - "type": "package", - "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" - }, - "compile": { - "ref/netcoreapp1.1/System.Runtime.InteropServices.dll": {} - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtime": { - "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Runtime.Loader/4.0.0": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.Loader.dll": {} - }, - "runtime": { - "lib/netstandard1.5/System.Runtime.Loader.dll": {} - } - }, - "System.Runtime.Numerics/4.3.0": { - "type": "package", - "dependencies": { - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.Numerics.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.Numerics.dll": {} - } - }, - "System.Runtime.Serialization.Json/4.0.2": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Private.DataContractSerialization": "4.1.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Runtime.Serialization.Json.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.Serialization.Json.dll": {} - } - }, - "System.Runtime.Serialization.Primitives/4.1.1": { - "type": "package", - "dependencies": { - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} - } - }, - "System.Security.Cryptography.Algorithms/4.3.0": { - "type": "package", - "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" - }, - "compile": { - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {} - }, - "runtimeTargets": { - "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "osx" - }, - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Cng/4.3.0": { - "type": "package", - "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" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Csp/4.3.0": { - "type": "package", - "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" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Encoding/4.3.0": { - "type": "package", - "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" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "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" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtime": { - "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": { - "assetType": "runtime", - "rid": "unix" - } - } - }, - "System.Security.Cryptography.Primitives/4.3.0": { - "type": "package", - "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" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} - } - }, - "System.Security.Cryptography.X509Certificates/4.3.0": { - "type": "package", - "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" - }, - "compile": { - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Text.Encoding/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.dll": {} - } - }, - "System.Text.Encoding.CodePages/4.5.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "System.Runtime.CompilerServices.Unsafe": "4.5.2" - }, - "compile": { - "lib/netstandard2.0/System.Text.Encoding.CodePages.dll": {} - }, - "runtime": { - "lib/netstandard2.0/System.Text.Encoding.CodePages.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netcoreapp2.0/System.Text.Encoding.CodePages.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Text.Encoding.Extensions/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": {} - } - }, - "System.Text.RegularExpressions/4.3.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netcoreapp1.1/System.Text.RegularExpressions.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Text.RegularExpressions.dll": {} - } - }, - "System.Threading/4.3.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.dll": {} - } - }, - "System.Threading.Tasks/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Tasks.dll": {} - } - }, - "System.Threading.Tasks.Extensions/4.5.3": { - "type": "package", - "compile": { - "ref/netcoreapp2.1/_._": {} - }, - "runtime": { - "lib/netcoreapp2.1/_._": {} - } - }, - "System.Threading.Thread/4.0.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Thread.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.Thread.dll": {} - } - }, - "System.Threading.ThreadPool/4.0.10": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.ThreadPool.dll": {} - } - }, - "System.Threading.Timer/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.2/System.Threading.Timer.dll": {} - } - }, - "System.ValueTuple/4.5.0": { - "type": "package", - "compile": { - "ref/netcoreapp2.0/_._": {} - }, - "runtime": { - "lib/netcoreapp2.0/_._": {} - } - }, - "System.Xml.ReaderWriter/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "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.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Tasks.Extensions": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Xml.ReaderWriter.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.ReaderWriter.dll": {} - } - }, - "System.Xml.XDocument/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Globalization": "4.3.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.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Xml.XDocument.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XDocument.dll": {} - } - }, - "System.Xml.XmlDocument/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.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.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Xml.XmlDocument.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XmlDocument.dll": {} - } - }, - "System.Xml.XmlSerializer/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "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.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XmlDocument": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XmlSerializer.dll": {} - } - }, - "System.Xml.XPath/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "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.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Xml.XPath.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XPath.dll": {} - } - }, - "System.Xml.XPath.XmlDocument/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "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.Xml.ReaderWriter": "4.0.11", - "System.Xml.XPath": "4.0.1", - "System.Xml.XmlDocument": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/System.Xml.XPath.XmlDocument.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XPath.XmlDocument.dll": {} - } - }, - "JsonApiDotNetCore.MongoDb/1.0.0": { - "type": "project", - "framework": ".NETCoreApp,Version=v3.1", - "dependencies": { - "JsonApiDotNetCore": "4.0.0-beta1", - "MongoDB.Driver": "2.11.2" - }, - "compile": { - "bin/placeholder/JsonApiDotNetCore.MongoDb.dll": {} - }, - "runtime": { - "bin/placeholder/JsonApiDotNetCore.MongoDb.dll": {} - } - } - } - }, - "libraries": { - "Ben.Demystifier/0.1.6": { - "sha512": "sYI8+ANUo78i/vIq9Vjrjjl6A00yVbT6XsuSVvUMVRVEKJHXZu4VE00RZHg/CA7QxmaQ1zfw/Bs6DAU+OJUNAg==", - "type": "package", - "path": "ben.demystifier/0.1.6", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ben.demystifier.0.1.6.nupkg.sha512", - "ben.demystifier.nuspec", - "lib/net45/Ben.Demystifier.dll", - "lib/netstandard2.0/Ben.Demystifier.dll", - "src/Ben.Demystifier/Ben.Demystifier.csproj", - "src/Ben.Demystifier/EnhancedStackFrame.cs", - "src/Ben.Demystifier/EnhancedStackTrace.Frames.cs", - "src/Ben.Demystifier/EnhancedStackTrace.cs", - "src/Ben.Demystifier/Enumerable/EnumerableIList.cs", - "src/Ben.Demystifier/Enumerable/EnumeratorIList.cs", - "src/Ben.Demystifier/Enumerable/IEnumerableIList.cs", - "src/Ben.Demystifier/ExceptionExtentions.cs", - "src/Ben.Demystifier/Internal/ILReader.cs", - "src/Ben.Demystifier/Internal/PortablePdbReader.cs", - "src/Ben.Demystifier/Internal/ReflectionHelper.cs", - "src/Ben.Demystifier/ResolvedMethod.cs", - "src/Ben.Demystifier/ResolvedParameter.cs", - "src/Ben.Demystifier/StringBuilderExtentions.cs", - "src/Ben.Demystifier/TypeNameHelper.cs", - "src/Ben.Demystifier/ValueTupleResolvedParameter.cs" - ] - }, - "Castle.Core/4.4.0": { - "sha512": "b5rRL5zeaau1y/5hIbI+6mGw3cwun16YjkHZnV9RRT5UyUIFsgLmNXJ0YnIN9p8Hw7K7AbG1q1UclQVU3DinAQ==", - "type": "package", - "path": "castle.core/4.4.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ASL - Apache Software Foundation License.txt", - "CHANGELOG.md", - "LICENSE", - "castle.core.4.4.0.nupkg.sha512", - "castle.core.nuspec", - "lib/net35/Castle.Core.dll", - "lib/net35/Castle.Core.xml", - "lib/net40/Castle.Core.dll", - "lib/net40/Castle.Core.xml", - "lib/net45/Castle.Core.dll", - "lib/net45/Castle.Core.xml", - "lib/netstandard1.3/Castle.Core.dll", - "lib/netstandard1.3/Castle.Core.xml", - "lib/netstandard1.5/Castle.Core.dll", - "lib/netstandard1.5/Castle.Core.xml", - "readme.txt" - ] - }, - "coverlet.collector/1.0.1": { - "sha512": "RAuno8s7DBGo2IdV/1d8YSnXMd/728K3PBT5R6/kfGx1yunBZmavlaFQfhGe7Q7N2nUMkvVET+7ITn3+KSg+Uw==", - "type": "package", - "path": "coverlet.collector/1.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "build/netstandard1.0/Microsoft.Extensions.FileSystemGlobbing.dll", - "build/netstandard1.0/Microsoft.TestPlatform.CoreUtilities.dll", - "build/netstandard1.0/Microsoft.TestPlatform.PlatformAbstractions.dll", - "build/netstandard1.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", - "build/netstandard1.0/Mono.Cecil.Mdb.dll", - "build/netstandard1.0/Mono.Cecil.Pdb.dll", - "build/netstandard1.0/Mono.Cecil.Rocks.dll", - "build/netstandard1.0/Mono.Cecil.dll", - "build/netstandard1.0/Newtonsoft.Json.dll", - "build/netstandard1.0/System.Xml.XPath.XmlDocument.dll", - "build/netstandard1.0/coverlet.collector.deps.json", - "build/netstandard1.0/coverlet.collector.dll", - "build/netstandard1.0/coverlet.collector.pdb", - "build/netstandard1.0/coverlet.collector.targets", - "build/netstandard1.0/coverlet.core.dll", - "build/netstandard1.0/coverlet.core.pdb", - "coverlet.collector.1.0.1.nupkg.sha512", - "coverlet.collector.nuspec" - ] - }, - "DnsClient/1.3.1": { - "sha512": "b9XczgqSjs3dd+OlV799jn+LXxdfirln1q36GKjs3QwWBhjhgIvgHLEG5s2VrBLcP4ogQjtA0PZ5+AmRJ35Vhg==", - "type": "package", - "path": "dnsclient/1.3.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "dnsclient.1.3.1.nupkg.sha512", - "dnsclient.nuspec", - "icon.png", - "lib/net45/DnsClient.dll", - "lib/net45/DnsClient.xml", - "lib/net471/DnsClient.dll", - "lib/net471/DnsClient.xml", - "lib/netstandard1.3/DnsClient.dll", - "lib/netstandard1.3/DnsClient.xml", - "lib/netstandard2.0/DnsClient.dll", - "lib/netstandard2.0/DnsClient.xml", - "lib/netstandard2.1/DnsClient.dll", - "lib/netstandard2.1/DnsClient.xml" - ] - }, - "Humanizer/2.7.9": { - "sha512": "cnIWMLmibmotgv13Jz0pA5ZrS4pczuq3SE2BBOmWnZNBeypUJCM82Gu1LrfjFy5ZxIPGPVzlvHt0ejo2WrbQVw==", - "type": "package", - "path": "humanizer/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.2.7.9.nupkg.sha512", - "humanizer.nuspec" - ] - }, - "Humanizer.Core/2.7.9": { - "sha512": "CvBPqAgYcvRCDgtHi9pUdPpZqWGyqfJe02qDugMCy4/xia+q0xm/xxqTO55aZkJapdgqrvHb0I5u+sHLzovp+Q==", - "type": "package", - "path": "humanizer.core/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.2.7.9.nupkg.sha512", - "humanizer.core.nuspec", - "lib/netstandard1.0/Humanizer.dll", - "lib/netstandard1.0/Humanizer.xml", - "lib/netstandard2.0/Humanizer.dll", - "lib/netstandard2.0/Humanizer.xml" - ] - }, - "Humanizer.Core.af/2.7.9": { - "sha512": "7NWBpe6YeZ6G1NVT2mgwB4RdZn9g9zbUtssae47TFuSUxCFE8SdSiiwXu6QG+twjuaa15B833HnqKMJejlNxcA==", - "type": "package", - "path": "humanizer.core.af/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.af.2.7.9.nupkg.sha512", - "humanizer.core.af.nuspec", - "lib/netstandard1.0/af/Humanizer.resources.dll", - "lib/netstandard2.0/af/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.ar/2.7.9": { - "sha512": "2SrkqJ26woxPW8Zc5lHXJX7nftouDnhFbMpDIYdkb5itNSJzPxl3AkXLHlh5WyfauH7r/p29WHBlik4A4Skq+A==", - "type": "package", - "path": "humanizer.core.ar/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.ar.2.7.9.nupkg.sha512", - "humanizer.core.ar.nuspec", - "lib/netstandard1.0/ar/Humanizer.resources.dll", - "lib/netstandard2.0/ar/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.bg/2.7.9": { - "sha512": "kpRp7agDo5WaMSGBHgybQaQUhUy2EPe7p6KoIe020XF3TCcKMPfVmIcm6m4sVwdXjaIWfkWhkPBmVwKNfcmovg==", - "type": "package", - "path": "humanizer.core.bg/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.bg.2.7.9.nupkg.sha512", - "humanizer.core.bg.nuspec", - "lib/netstandard1.0/bg/Humanizer.resources.dll", - "lib/netstandard2.0/bg/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.bn-BD/2.7.9": { - "sha512": "h5oChbNlv+qgUBOMf36u5cQMhXAKPbRh2cRXC2sgB267nDhtKz0531hRrWY0FlsjYATK92s6KmJtq8eoLmoJuw==", - "type": "package", - "path": "humanizer.core.bn-bd/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.bn-bd.2.7.9.nupkg.sha512", - "humanizer.core.bn-bd.nuspec", - "lib/netstandard1.0/bn-BD/Humanizer.resources.dll", - "lib/netstandard2.0/bn-BD/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.cs/2.7.9": { - "sha512": "afdXXIkcKuhSxToZv3BiFj9pjPV+Wn/bbQhJHDKUBPecJRM63/fRhP+O6XhSBp4nzfAu9qgOUopzSk4yAbGVxg==", - "type": "package", - "path": "humanizer.core.cs/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.cs.2.7.9.nupkg.sha512", - "humanizer.core.cs.nuspec", - "lib/netstandard1.0/cs/Humanizer.resources.dll", - "lib/netstandard2.0/cs/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.da/2.7.9": { - "sha512": "H7Okf6sb8KCxq1mfGddgzeM/X9u1VZ5eQhL4NyqP7AsxllUVEittCHkdZpOKq1ZgdKIC/YCmLEF3KbDAwm6PiQ==", - "type": "package", - "path": "humanizer.core.da/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.da.2.7.9.nupkg.sha512", - "humanizer.core.da.nuspec", - "lib/netstandard1.0/da/Humanizer.resources.dll", - "lib/netstandard2.0/da/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.de/2.7.9": { - "sha512": "v//DZRFjcrWMFD/ssGKm/9ldIqvKrPMC6yyavsF3bdSH+U92XZwJsNWdMh6tR4tjZCnpSTGjpeT11G0wRLjWKA==", - "type": "package", - "path": "humanizer.core.de/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.de.2.7.9.nupkg.sha512", - "humanizer.core.de.nuspec", - "lib/netstandard1.0/de/Humanizer.resources.dll", - "lib/netstandard2.0/de/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.el/2.7.9": { - "sha512": "Bp8XnGr8OWaRmYemcuKpU6jrA9xrx8TQIq9wad7VIx89VVIbnilCYY68EqsmPHa9wNJq+gpglHPZbKEr0CNKcA==", - "type": "package", - "path": "humanizer.core.el/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.el.2.7.9.nupkg.sha512", - "humanizer.core.el.nuspec", - "lib/netstandard1.0/el/Humanizer.resources.dll", - "lib/netstandard2.0/el/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.es/2.7.9": { - "sha512": "mc5t7BVXYBTn7jymWtHGSdZim5zg9RyCMrl1+yIxiB74KPUH3VD5WUoIuB0HGc9g29SNl37jj7curx9dX8AaUg==", - "type": "package", - "path": "humanizer.core.es/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.es.2.7.9.nupkg.sha512", - "humanizer.core.es.nuspec", - "lib/netstandard1.0/es/Humanizer.resources.dll", - "lib/netstandard2.0/es/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.fa/2.7.9": { - "sha512": "pl6o8wsfIoiRzBK/RXwuVIZNj/UKc2RPgFdpawbOXpQFGkUY1/lTBqQo4zrbM06U/OAWc3R4ZnaPiNSNAs0o3w==", - "type": "package", - "path": "humanizer.core.fa/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.fa.2.7.9.nupkg.sha512", - "humanizer.core.fa.nuspec", - "lib/netstandard1.0/fa/Humanizer.resources.dll", - "lib/netstandard2.0/fa/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.fi-FI/2.7.9": { - "sha512": "GlmHze9WVElfWK2gh361/eLx5r0XDyTY7K/0VdOpV0tIesyNpOqibtzJxt6JCTJk3I0XXxrfU7tPkv7nBkEpzQ==", - "type": "package", - "path": "humanizer.core.fi-fi/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.fi-fi.2.7.9.nupkg.sha512", - "humanizer.core.fi-fi.nuspec", - "lib/netstandard1.0/fi-FI/Humanizer.resources.dll", - "lib/netstandard2.0/fi-FI/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.fr/2.7.9": { - "sha512": "68QjBxLIv9by0uAfCAr8d7+Giv0m8j21lixv/pEdo21/dJfPZoBvTXp9eLhww3KwPZ1BkjJoY8an637Hlsmmtw==", - "type": "package", - "path": "humanizer.core.fr/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.fr.2.7.9.nupkg.sha512", - "humanizer.core.fr.nuspec", - "lib/netstandard1.0/fr/Humanizer.resources.dll", - "lib/netstandard2.0/fr/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.fr-BE/2.7.9": { - "sha512": "F4lxJn9HCRKxUs0ZI83trIb9ipb1Urzv3P6Og3fsYL1tXvjlbx8XWRPIGdbbCQIYNyYPSvyohCGs/yxZCLhtLA==", - "type": "package", - "path": "humanizer.core.fr-be/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.fr-be.2.7.9.nupkg.sha512", - "humanizer.core.fr-be.nuspec", - "lib/netstandard1.0/fr-BE/Humanizer.resources.dll", - "lib/netstandard2.0/fr-BE/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.he/2.7.9": { - "sha512": "lc0Z4pIbzH9bNAbd+3CpG/gt74O8ywZZjlWut9xnNjvcrCi9S6Dv9zk5r/CLGXRPxuzK1/HeQUcBmReW15geHg==", - "type": "package", - "path": "humanizer.core.he/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.he.2.7.9.nupkg.sha512", - "humanizer.core.he.nuspec", - "lib/netstandard1.0/he/Humanizer.resources.dll", - "lib/netstandard2.0/he/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.hr/2.7.9": { - "sha512": "PJlXYwzfElGAkv74VlIQK3N2Vs2JPCBtDtvMw7G6YVDp2ZTeKbFQs31K8q93Sz7N8Bpt01OPho7DK7KO1UUYxQ==", - "type": "package", - "path": "humanizer.core.hr/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.hr.2.7.9.nupkg.sha512", - "humanizer.core.hr.nuspec", - "lib/netstandard1.0/hr/Humanizer.resources.dll", - "lib/netstandard2.0/hr/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.hu/2.7.9": { - "sha512": "4hLoqzUwosPieibLZAR5Q5NHYLt4bgiBRtvX13m+nAbKfnboinJlgS0bMmb1pWzzIg7WB1qOCUVtEdVWstheBw==", - "type": "package", - "path": "humanizer.core.hu/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.hu.2.7.9.nupkg.sha512", - "humanizer.core.hu.nuspec", - "lib/netstandard1.0/hu/Humanizer.resources.dll", - "lib/netstandard2.0/hu/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.id/2.7.9": { - "sha512": "0ynKnZhpOaaeQ9x60BDVrS4w83CWTvDnAoALUt9dxtbmQDFsMkcyJBP6x1ACSLYcrh6/AJ0Jt1KzHjaw/qmjOQ==", - "type": "package", - "path": "humanizer.core.id/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.id.2.7.9.nupkg.sha512", - "humanizer.core.id.nuspec", - "lib/netstandard1.0/id/Humanizer.resources.dll", - "lib/netstandard2.0/id/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.it/2.7.9": { - "sha512": "i9meHhQ2J3byqatNPr/8uTLIdV9pR/My63b4Hdk4GaiF4ibeAb3ZAGiBSb8whCE0AtM6586EE2Nxkc0xsCfz/A==", - "type": "package", - "path": "humanizer.core.it/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.it.2.7.9.nupkg.sha512", - "humanizer.core.it.nuspec", - "lib/netstandard1.0/it/Humanizer.resources.dll", - "lib/netstandard2.0/it/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.ja/2.7.9": { - "sha512": "pP0hRXWjewxA4TwEE91VWfnARMRI62GvatwoeXIaSWJLNzx3vGhG+ZoJRMuFJjsw48SOFgkqI8Q7vdJRTyxwIQ==", - "type": "package", - "path": "humanizer.core.ja/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.ja.2.7.9.nupkg.sha512", - "humanizer.core.ja.nuspec", - "lib/netstandard1.0/ja/Humanizer.resources.dll", - "lib/netstandard2.0/ja/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.lv/2.7.9": { - "sha512": "2RwYeRYTtI0eT4vbbxYE7bwKK/jJCrG/WVk1KAWA1+AsbPpakqkedpuMq1VMlx1GYg7IK4FrA+nTfYqLO42IOQ==", - "type": "package", - "path": "humanizer.core.lv/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.lv.2.7.9.nupkg.sha512", - "humanizer.core.lv.nuspec", - "lib/netstandard1.0/lv/Humanizer.resources.dll", - "lib/netstandard2.0/lv/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.ms-MY/2.7.9": { - "sha512": "6O9CdO239ddC2inn32ialw1BEkBOHoBoHhkaw8x114SlnYEDRaS9a+GRhJZ0d6s3H3IUznbk3qv7sSqc8XI67g==", - "type": "package", - "path": "humanizer.core.ms-my/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.ms-my.2.7.9.nupkg.sha512", - "humanizer.core.ms-my.nuspec", - "lib/netstandard1.0/ms-MY/Humanizer.resources.dll", - "lib/netstandard2.0/ms-MY/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.mt/2.7.9": { - "sha512": "AoUiq+peyhTZURaHcTzeYcwIWp1pmDS5iWY3opSrS/KdhP2HKlLWjf+ofcFhsDBgsqMMhT+LF4PMJ1qj6NVcFQ==", - "type": "package", - "path": "humanizer.core.mt/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.mt.2.7.9.nupkg.sha512", - "humanizer.core.mt.nuspec", - "lib/netstandard1.0/mt/Humanizer.resources.dll", - "lib/netstandard2.0/mt/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.nb/2.7.9": { - "sha512": "Bm+3Gsk1jjwyRuYp0rRSRPawCtP4/D4Fk5uXJivNGibsScvyuaets8kBQxD/SyJjIZLrRErN5Tq7YPyeUADD3w==", - "type": "package", - "path": "humanizer.core.nb/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.nb.2.7.9.nupkg.sha512", - "humanizer.core.nb.nuspec", - "lib/netstandard1.0/nb/Humanizer.resources.dll", - "lib/netstandard2.0/nb/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.nb-NO/2.7.9": { - "sha512": "EpDL9LlyWNC+/Kk1f4cA8goiFgrSQ2evpNYRzUCJCSSmA5F2OR7owkGiwWtB3nNS/SRkrC2ouQBwiXPj8bkQHg==", - "type": "package", - "path": "humanizer.core.nb-no/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.nb-no.2.7.9.nupkg.sha512", - "humanizer.core.nb-no.nuspec", - "lib/netstandard1.0/nb-NO/Humanizer.resources.dll", - "lib/netstandard2.0/nb-NO/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.nl/2.7.9": { - "sha512": "lB5a6UoclIfS0zHvczEzoWjdkUnS+aS4UibHt5bQWNTZgzxJTSVYe1X8/L9usSRk6h1WHy4O47mplfwdCtEsIg==", - "type": "package", - "path": "humanizer.core.nl/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.nl.2.7.9.nupkg.sha512", - "humanizer.core.nl.nuspec", - "lib/netstandard1.0/nl/Humanizer.resources.dll", - "lib/netstandard2.0/nl/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.pl/2.7.9": { - "sha512": "SNMNRp3GklOpVFwFXEMaUggCR27rVbD2z1CPmSVL+2RlIHcdrdNbrxRX8neKxzl1Enmue550Gg9ipYRTrZmF3Q==", - "type": "package", - "path": "humanizer.core.pl/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.pl.2.7.9.nupkg.sha512", - "humanizer.core.pl.nuspec", - "lib/netstandard1.0/pl/Humanizer.resources.dll", - "lib/netstandard2.0/pl/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.pt/2.7.9": { - "sha512": "M5/hzNDPJD/Owp5S30LqBwukj8WmxA8U0XJIK9BEpYOyuuegsp8W4RaCvj79BNWWkjayBjDjHmq1f4E2UvtCgg==", - "type": "package", - "path": "humanizer.core.pt/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.pt.2.7.9.nupkg.sha512", - "humanizer.core.pt.nuspec", - "lib/netstandard1.0/pt/Humanizer.resources.dll", - "lib/netstandard2.0/pt/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.ro/2.7.9": { - "sha512": "dUlwWOhqMz2y/uALmLIfey8pvV3tLdDyMfVZnPPqt9pNfihtnJWzojRCmf1+oMJ5O7uEmpxE1c5HafIQLd1fcQ==", - "type": "package", - "path": "humanizer.core.ro/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.ro.2.7.9.nupkg.sha512", - "humanizer.core.ro.nuspec", - "lib/netstandard1.0/ro/Humanizer.resources.dll", - "lib/netstandard2.0/ro/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.ru/2.7.9": { - "sha512": "2fQtt7WMsjMSO2pFzC/vTx6NLpd7BYW0JLjAQkHdEb43omWh5oWJ02Y81uvnw/AUn0KHBL0nf8KBIEthwvXoqQ==", - "type": "package", - "path": "humanizer.core.ru/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.ru.2.7.9.nupkg.sha512", - "humanizer.core.ru.nuspec", - "lib/netstandard1.0/ru/Humanizer.resources.dll", - "lib/netstandard2.0/ru/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.sk/2.7.9": { - "sha512": "+C6+xxs3/So+BjSRYbi6LqBU6J9/UDI1bRnv43gOauVop0gWrHZOg/J44/CL2yiD7l6SOY4VLtYAJDxONsXklQ==", - "type": "package", - "path": "humanizer.core.sk/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.sk.2.7.9.nupkg.sha512", - "humanizer.core.sk.nuspec", - "lib/netstandard1.0/sk/Humanizer.resources.dll", - "lib/netstandard2.0/sk/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.sl/2.7.9": { - "sha512": "oOBrpVFUcLw+oJ3N2W+gtKoU9XuvmSbGRbmnqI+cKaLoMqxVvUw+Er3btaJ9UMkYS5zv7N/zhewWPP4uZBWRig==", - "type": "package", - "path": "humanizer.core.sl/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.sl.2.7.9.nupkg.sha512", - "humanizer.core.sl.nuspec", - "lib/netstandard1.0/sl/Humanizer.resources.dll", - "lib/netstandard2.0/sl/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.sr/2.7.9": { - "sha512": "1q5s+UWN79g+bXshpsdjEb1oVORg+FzNpayR1jup8T2U7jtW2AIM5A9Uol+EGazZzgbt2rwluCtvUjNUeYkmaQ==", - "type": "package", - "path": "humanizer.core.sr/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.sr.2.7.9.nupkg.sha512", - "humanizer.core.sr.nuspec", - "lib/netstandard1.0/sr/Humanizer.resources.dll", - "lib/netstandard2.0/sr/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.sr-Latn/2.7.9": { - "sha512": "J5BSJO0Gm2g8M/nAnii4zOIg0Tk4RjwbKvhvSjzaPm8dZGCZvEWVmYuQ7CFNezEfA0EGSmKnlsZRoy2TVN2MRA==", - "type": "package", - "path": "humanizer.core.sr-latn/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.sr-latn.2.7.9.nupkg.sha512", - "humanizer.core.sr-latn.nuspec", - "lib/netstandard1.0/sr-Latn/Humanizer.resources.dll", - "lib/netstandard2.0/sr-Latn/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.sv/2.7.9": { - "sha512": "xwIXhOf7vSYCc3s/mBRU/1PxOcOFgC/hYY3IjHR986YDbzUOoGlpt4Cz2inysMfK3fceTQKQny/0rtbxvMzhAg==", - "type": "package", - "path": "humanizer.core.sv/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.sv.2.7.9.nupkg.sha512", - "humanizer.core.sv.nuspec", - "lib/netstandard1.0/sv/Humanizer.resources.dll", - "lib/netstandard2.0/sv/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.tr/2.7.9": { - "sha512": "e0yPBy56+mOiUBV99a7H4nZYSh5mGR1/dW/Z6pBmLftEBnusDn850jrMJ/u2aFh5Vj8tipB0/DoSd3jp/JKM7A==", - "type": "package", - "path": "humanizer.core.tr/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.tr.2.7.9.nupkg.sha512", - "humanizer.core.tr.nuspec", - "lib/netstandard1.0/tr/Humanizer.resources.dll", - "lib/netstandard2.0/tr/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.uk/2.7.9": { - "sha512": "8s6LdUjCR+b9K3IC25d68VikDh5d9HKWxnZngiVLfPlyMa0UYX9GRAynN/9LWRoOiCL4QRxMeeZYWgEbCK7pcw==", - "type": "package", - "path": "humanizer.core.uk/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.uk.2.7.9.nupkg.sha512", - "humanizer.core.uk.nuspec", - "lib/netstandard1.0/uk/Humanizer.resources.dll", - "lib/netstandard2.0/uk/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.uz-Cyrl-UZ/2.7.9": { - "sha512": "jeGA4WzCQeFKgT4Y1SdgT5zGPAwDP2LMjK7btRyO7X6KFfZ6vHZ8vw01yO1ra2NfeFF7clI6Bi/bP7CcF9Gseg==", - "type": "package", - "path": "humanizer.core.uz-cyrl-uz/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.uz-cyrl-uz.2.7.9.nupkg.sha512", - "humanizer.core.uz-cyrl-uz.nuspec", - "lib/netstandard1.0/uz-Cyrl-UZ/Humanizer.resources.dll", - "lib/netstandard2.0/uz-Cyrl-UZ/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.uz-Latn-UZ/2.7.9": { - "sha512": "8GHFG4vjHrkJauZxfrySIKR7uIFi7E28IGtJ2rhuPWrXZF7ERvj8o5ByuSKBk6/bNKdnOQ0RSyA3VAPG1JGpPQ==", - "type": "package", - "path": "humanizer.core.uz-latn-uz/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.uz-latn-uz.2.7.9.nupkg.sha512", - "humanizer.core.uz-latn-uz.nuspec", - "lib/netstandard1.0/uz-Latn-UZ/Humanizer.resources.dll", - "lib/netstandard2.0/uz-Latn-UZ/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.vi/2.7.9": { - "sha512": "lcLh5EkLNanMtZhC5XNQP/so+QiktIrIXoJCO8YFe2ZUdgmIGT5GDTrBbdgA2aHTTOAHqrtxGnqkODe1cQL/bA==", - "type": "package", - "path": "humanizer.core.vi/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.vi.2.7.9.nupkg.sha512", - "humanizer.core.vi.nuspec", - "lib/netstandard1.0/vi/Humanizer.resources.dll", - "lib/netstandard2.0/vi/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.zh-CN/2.7.9": { - "sha512": "Ogs+d48nUr5yeFy6S7LxilKcuD4u8lmJx4ahbGZiDkQD7ARcTRKEbkcwB6bFf8k87W80BVkNkMSQEVUP1rbGZg==", - "type": "package", - "path": "humanizer.core.zh-cn/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.zh-cn.2.7.9.nupkg.sha512", - "humanizer.core.zh-cn.nuspec", - "lib/netstandard1.0/zh-CN/Humanizer.resources.dll", - "lib/netstandard2.0/zh-CN/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.zh-Hans/2.7.9": { - "sha512": "Eqd7xYf9WyAG5JA/Gz+vI8BWbZH88f/3D4QymqPzv1MD8VfZ+nFfg4xamGhXvqihRHmWShLiQx+eVoD5Vg6DNA==", - "type": "package", - "path": "humanizer.core.zh-hans/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.zh-hans.2.7.9.nupkg.sha512", - "humanizer.core.zh-hans.nuspec", - "lib/netstandard1.0/zh-Hans/Humanizer.resources.dll", - "lib/netstandard2.0/zh-Hans/Humanizer.resources.dll" - ] - }, - "Humanizer.Core.zh-Hant/2.7.9": { - "sha512": "I1zelHgyJDZ2iTCHEmWrCa+PyFPEWDaYxPMpqPwZlgL2EvBHyJRwy0eJFYHHg+YAxcEVwgfsvzr8snhn/IDzrA==", - "type": "package", - "path": "humanizer.core.zh-hant/2.7.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "humanizer.core.zh-hant.2.7.9.nupkg.sha512", - "humanizer.core.zh-hant.nuspec", - "lib/netstandard1.0/zh-Hant/Humanizer.resources.dll", - "lib/netstandard2.0/zh-Hant/Humanizer.resources.dll" - ] - }, - "JsonApiDotNetCore/4.0.0-beta1": { - "sha512": "rNrSWk2+GHx9iG2wny86rk4Tir0tdv1rNhZ/CFEMrURkSElws/R0ibxhmqSsof5337kwvG9xpX/gLjM4qPXSCA==", - "type": "package", - "path": "jsonapidotnetcore/4.0.0-beta1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "jsonapidotnetcore.4.0.0-beta1.nupkg.sha512", - "jsonapidotnetcore.nuspec", - "lib/netcoreapp3.1/JsonApiDotNetCore.dll", - "lib/netcoreapp3.1/JsonApiDotNetCore.xml" - ] - }, - "Microsoft.Bcl.AsyncInterfaces/1.1.1": { - "sha512": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==", - "type": "package", - "path": "microsoft.bcl.asyncinterfaces/1.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/net461/Microsoft.Bcl.AsyncInterfaces.xml", - "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", - "microsoft.bcl.asyncinterfaces.1.1.1.nupkg.sha512", - "microsoft.bcl.asyncinterfaces.nuspec", - "ref/net461/Microsoft.Bcl.AsyncInterfaces.dll", - "ref/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", - "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Microsoft.Bcl.HashCode/1.1.0": { - "sha512": "J2G1k+u5unBV+aYcwxo94ip16Rkp65pgWFb0R6zwJipzWNMgvqlWeuI7/+R+e8bob66LnSG+llLJ+z8wI94cHg==", - "type": "package", - "path": "microsoft.bcl.hashcode/1.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/Microsoft.Bcl.HashCode.dll", - "lib/net461/Microsoft.Bcl.HashCode.xml", - "lib/netcoreapp2.1/Microsoft.Bcl.HashCode.dll", - "lib/netcoreapp2.1/Microsoft.Bcl.HashCode.xml", - "lib/netstandard2.0/Microsoft.Bcl.HashCode.dll", - "lib/netstandard2.0/Microsoft.Bcl.HashCode.xml", - "lib/netstandard2.1/Microsoft.Bcl.HashCode.dll", - "lib/netstandard2.1/Microsoft.Bcl.HashCode.xml", - "microsoft.bcl.hashcode.1.1.0.nupkg.sha512", - "microsoft.bcl.hashcode.nuspec", - "ref/net461/Microsoft.Bcl.HashCode.dll", - "ref/netcoreapp2.1/Microsoft.Bcl.HashCode.dll", - "ref/netstandard2.0/Microsoft.Bcl.HashCode.dll", - "ref/netstandard2.1/Microsoft.Bcl.HashCode.dll", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Microsoft.CodeCoverage/16.2.0": { - "sha512": "fKiUOhhMP3IN1qM2tDHPWzW4JRbriFkIPiIzKUwMWT+Q+80bycxkLLCvxmVFoeA7gvWegNbTUjaX7mL3MM9XKg==", - "type": "package", - "path": "microsoft.codecoverage/16.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "build/netstandard1.0/CodeCoverage/CodeCoverage.config", - "build/netstandard1.0/CodeCoverage/CodeCoverage.exe", - "build/netstandard1.0/CodeCoverage/amd64/covrun64.dll", - "build/netstandard1.0/CodeCoverage/amd64/msdia140.dll", - "build/netstandard1.0/CodeCoverage/codecoveragemessages.dll", - "build/netstandard1.0/CodeCoverage/covrun32.dll", - "build/netstandard1.0/CodeCoverage/msdia140.dll", - "build/netstandard1.0/Microsoft.CodeCoverage.props", - "build/netstandard1.0/Microsoft.CodeCoverage.targets", - "build/netstandard1.0/Microsoft.VisualStudio.TraceDataCollector.dll", - "build/netstandard1.0/cs/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard1.0/de/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard1.0/es/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard1.0/fr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard1.0/it/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard1.0/ja/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard1.0/ko/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard1.0/pl/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard1.0/pt-BR/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard1.0/ru/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard1.0/tr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard1.0/zh-Hans/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard1.0/zh-Hant/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "lib/net45/Microsoft.VisualStudio.CodeCoverage.Shim.dll", - "lib/netcoreapp1.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll", - "microsoft.codecoverage.16.2.0.nupkg.sha512", - "microsoft.codecoverage.nuspec" - ] - }, - "Microsoft.EntityFrameworkCore/3.1.8": { - "sha512": "bI+yxA329qf+8efR6A35/3L2NLekcsWJOfXakA37ILUiWcX1qp/XsXmEi6SYMpMikioy0a5p0IU8gHoqSvtLaA==", - "type": "package", - "path": "microsoft.entityframeworkcore/3.1.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netstandard2.0/Microsoft.EntityFrameworkCore.dll", - "lib/netstandard2.0/Microsoft.EntityFrameworkCore.xml", - "microsoft.entityframeworkcore.3.1.8.nupkg.sha512", - "microsoft.entityframeworkcore.nuspec" - ] - }, - "Microsoft.EntityFrameworkCore.Abstractions/3.1.8": { - "sha512": "bJ6Crbz3FP2Cze1DXg+FiE5l0AFK8y6j32LP+6tMFrpdJc0XB8XBGXEX6w9baulxXC8U3OYUq1yxFVwgNdVyJw==", - "type": "package", - "path": "microsoft.entityframeworkcore.abstractions/3.1.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Abstractions.dll", - "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Abstractions.xml", - "microsoft.entityframeworkcore.abstractions.3.1.8.nupkg.sha512", - "microsoft.entityframeworkcore.abstractions.nuspec" - ] - }, - "Microsoft.EntityFrameworkCore.Analyzers/3.1.8": { - "sha512": "Cm1+PV53O/xN4P8fMkSZq9aqyXRjEZ5kmuWs7W4yE4V4GLgrqTCRmtooM5tUPM3R7VI47hAa8Aab+UuSRvpU+w==", - "type": "package", - "path": "microsoft.entityframeworkcore.analyzers/3.1.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll", - "lib/netstandard2.0/_._", - "microsoft.entityframeworkcore.analyzers.3.1.8.nupkg.sha512", - "microsoft.entityframeworkcore.analyzers.nuspec" - ] - }, - "Microsoft.Extensions.Caching.Abstractions/3.1.8": { - "sha512": "iBIdKjKa2nR4LdknV2JMSRpJVM5TOca25EckPm6SZQT6HfH8RoHrn9m14GUAkvzE+uOziXRoAwr8YIC6ZOpyXg==", - "type": "package", - "path": "microsoft.extensions.caching.abstractions/3.1.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml", - "microsoft.extensions.caching.abstractions.3.1.8.nupkg.sha512", - "microsoft.extensions.caching.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.Caching.Memory/3.1.8": { - "sha512": "u04q7+tgc8l6pQ5HOcr6scgapkQQHnrhpGoCaaAZd24R36/NxGsGxuhSmhHOrQx9CsBLe2CVBN/4CkLlxtnnXw==", - "type": "package", - "path": "microsoft.extensions.caching.memory/3.1.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.xml", - "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll", - "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml", - "microsoft.extensions.caching.memory.3.1.8.nupkg.sha512", - "microsoft.extensions.caching.memory.nuspec" - ] - }, - "Microsoft.Extensions.Configuration/3.1.8": { - "sha512": "xWvtu/ra8xDOy62ZXzQj1ElmmH3GpZBSKvw4LbfNXKCy+PaziS5Uh0gQ47D4H4w3u+PJfhNWCCGCp9ORNEzkRw==", - "type": "package", - "path": "microsoft.extensions.configuration/3.1.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.xml", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", - "microsoft.extensions.configuration.3.1.8.nupkg.sha512", - "microsoft.extensions.configuration.nuspec" - ] - }, - "Microsoft.Extensions.Configuration.Abstractions/3.1.8": { - "sha512": "0qbNyxGpuNP/fuQ3FLHesm1Vn/83qYcAgVsi1UQCQN1peY4YH1uiizOh4xbYkQyxiVMD/c/zhiYYv94G0DXSSA==", - "type": "package", - "path": "microsoft.extensions.configuration.abstractions/3.1.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "microsoft.extensions.configuration.abstractions.3.1.8.nupkg.sha512", - "microsoft.extensions.configuration.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.Configuration.Binder/3.1.8": { - "sha512": "l/oqIWRM4YF62mlCOrIKGUOCemsaID/lngK2SZEtpYI8LrktpjPd4QzvENWj5GebbLbqOtsFhF6Ko6dgzmUnBw==", - "type": "package", - "path": "microsoft.extensions.configuration.binder/3.1.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.xml", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml", - "microsoft.extensions.configuration.binder.3.1.8.nupkg.sha512", - "microsoft.extensions.configuration.binder.nuspec" - ] - }, - "Microsoft.Extensions.DependencyInjection/3.1.8": { - "sha512": "tUpYcVxFqwh8wVD8O+6A8gJnVtl6L4N1Vd9bLJgQSJ0gjBTUQ/eKwJn0LglkkaDU7GAxODDv4eexgZn3QSE0NQ==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection/3.1.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/net461/Microsoft.Extensions.DependencyInjection.dll", - "lib/net461/Microsoft.Extensions.DependencyInjection.xml", - "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", - "microsoft.extensions.dependencyinjection.3.1.8.nupkg.sha512", - "microsoft.extensions.dependencyinjection.nuspec" - ] - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/3.1.8": { - "sha512": "YP0kEBkSLTVl3znqZEux+xyJpz5iVNwFZf0OPS7nupdKbojSlO7Fa+JuQjLYpWfpAshaMcznu27tjWzfXRJnOA==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection.abstractions/3.1.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "microsoft.extensions.dependencyinjection.abstractions.3.1.8.nupkg.sha512", - "microsoft.extensions.dependencyinjection.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.Logging/3.1.8": { - "sha512": "Bch88WGwrgJUabSOiTbPgne/jkCcWTyP97db8GWzQH9RcGi6TThiRm8ggsD+OXBW2UBwAYx1Zb1ns1elsMiomQ==", - "type": "package", - "path": "microsoft.extensions.logging/3.1.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", - "microsoft.extensions.logging.3.1.8.nupkg.sha512", - "microsoft.extensions.logging.nuspec" - ] - }, - "Microsoft.Extensions.Logging.Abstractions/3.1.8": { - "sha512": "LxQPR/KE4P9nx304VcFipWPcW8ZOZOGHuiYlG0ncAQJItogDzR9nyYUNvziLObx2MfX2Z9iCTdAqEtoImaQOYg==", - "type": "package", - "path": "microsoft.extensions.logging.abstractions/3.1.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", - "microsoft.extensions.logging.abstractions.3.1.8.nupkg.sha512", - "microsoft.extensions.logging.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.Options/3.1.8": { - "sha512": "mpkwjNg5sr1XHEJwVS8G1w6dsh5/72vQOOe4aqhg012j93m8OOmfyIBwoQN4SE0KRRS+fatdW3qqUrHbRwlWOA==", - "type": "package", - "path": "microsoft.extensions.options/3.1.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netcoreapp3.1/Microsoft.Extensions.Options.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Options.xml", - "lib/netstandard2.0/Microsoft.Extensions.Options.dll", - "lib/netstandard2.0/Microsoft.Extensions.Options.xml", - "microsoft.extensions.options.3.1.8.nupkg.sha512", - "microsoft.extensions.options.nuspec" - ] - }, - "Microsoft.Extensions.Primitives/3.1.8": { - "sha512": "XcIoXQhT0kwnEhOKv/LmpWR6yF6QWmBTy9Fcsz4aHuCOgTJ7Zd23ELtUA4BfwlYoFlSedavS+vURz9tNekd44g==", - "type": "package", - "path": "microsoft.extensions.primitives/3.1.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.xml", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", - "microsoft.extensions.primitives.3.1.8.nupkg.sha512", - "microsoft.extensions.primitives.nuspec" - ] - }, - "Microsoft.NET.Test.Sdk/16.2.0": { - "sha512": "56w1drIQqpMgg3IxHcfra/jXOngiD4pbl0j6TNeJMlOQGlZ8wCMlyRTvn6Crd/FgGjwKbWLurdOHNGrfzLtl6A==", - "type": "package", - "path": "microsoft.net.test.sdk/16.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "build/net40/Microsoft.NET.Test.Sdk.props", - "build/net40/Microsoft.NET.Test.Sdk.targets", - "build/netcoreapp1.0/Microsoft.NET.Test.Sdk.Program.cs", - "build/netcoreapp1.0/Microsoft.NET.Test.Sdk.Program.fs", - "build/netcoreapp1.0/Microsoft.NET.Test.Sdk.Program.vb", - "build/netcoreapp1.0/Microsoft.NET.Test.Sdk.props", - "build/netcoreapp1.0/Microsoft.NET.Test.Sdk.targets", - "build/uap10.0/Microsoft.NET.Test.Sdk.props", - "buildMultiTargeting/Microsoft.NET.Test.Sdk.props", - "microsoft.net.test.sdk.16.2.0.nupkg.sha512", - "microsoft.net.test.sdk.nuspec" - ] - }, - "Microsoft.NETCore.Platforms/2.1.2": { - "sha512": "mOJy3M0UN+LUG21dLGMxaWZEP6xYpQEpLuvuEQBaownaX4YuhH6NmNUlN9si+vNkAS6dwJ//N1O4DmLf2CikVg==", - "type": "package", - "path": "microsoft.netcore.platforms/2.1.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netstandard1.0/_._", - "microsoft.netcore.platforms.2.1.2.nupkg.sha512", - "microsoft.netcore.platforms.nuspec", - "runtime.json", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Microsoft.NETCore.Targets/1.1.0": { - "sha512": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", - "type": "package", - "path": "microsoft.netcore.targets/1.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "microsoft.netcore.targets.1.1.0.nupkg.sha512", - "microsoft.netcore.targets.nuspec", - "runtime.json" - ] - }, - "Microsoft.TestPlatform.ObjectModel/16.2.0": { - "sha512": "RAyBf87uZ5XjRE953LlxqILpD1SqwQM6bXwxPUCAPPEy0uv12R+eKnFL7yaeLVHInMKkNNh1iD/cDOVDfSgllA==", - "type": "package", - "path": "microsoft.testplatform.objectmodel/16.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net451/Microsoft.TestPlatform.CoreUtilities.dll", - "lib/net451/Microsoft.TestPlatform.PlatformAbstractions.dll", - "lib/net451/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", - "lib/net451/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net451/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net451/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net451/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net451/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net451/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net451/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net451/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net451/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net451/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net451/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net451/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net451/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net451/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net451/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net451/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net451/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net451/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net451/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net451/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net451/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net451/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net451/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net451/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net451/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net451/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard1.4/Microsoft.TestPlatform.CoreUtilities.dll", - "lib/netstandard1.4/Microsoft.TestPlatform.PlatformAbstractions.dll", - "lib/netstandard1.4/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", - "lib/netstandard1.5/Microsoft.TestPlatform.CoreUtilities.dll", - "lib/netstandard1.5/Microsoft.TestPlatform.PlatformAbstractions.dll", - "lib/netstandard1.5/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", - "lib/netstandard1.5/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard1.5/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard1.5/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard1.5/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard1.5/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard1.5/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard1.5/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard1.5/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard1.5/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard1.5/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard1.5/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard1.5/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard1.5/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard1.5/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard1.5/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard1.5/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard1.5/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard1.5/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard1.5/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard1.5/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard1.5/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard1.5/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard1.5/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "microsoft.testplatform.objectmodel.16.2.0.nupkg.sha512", - "microsoft.testplatform.objectmodel.nuspec" - ] - }, - "Microsoft.TestPlatform.TestHost/16.2.0": { - "sha512": "PogSQ40KgkZjEBdC6KBGpMtuvFFCIdoJAMmK7CAHWyTXCfN1cPN8j0TFJKh+LneSg+y0QQDP23STMF609KhHQw==", - "type": "package", - "path": "microsoft.testplatform.testhost/16.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "build/uap10.0/Microsoft.TestPlatform.TestHost.props", - "build/uap10.0/Microsoft.TestPlatform.TestHost.targets", - "build/uap10.0/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "build/uap10.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "build/uap10.0/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "build/uap10.0/cs/Microsoft.TestPlatform.Utilities.resources.dll", - "build/uap10.0/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "build/uap10.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "build/uap10.0/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "build/uap10.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "build/uap10.0/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "build/uap10.0/de/Microsoft.TestPlatform.Utilities.resources.dll", - "build/uap10.0/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "build/uap10.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "build/uap10.0/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "build/uap10.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "build/uap10.0/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "build/uap10.0/es/Microsoft.TestPlatform.Utilities.resources.dll", - "build/uap10.0/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "build/uap10.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "build/uap10.0/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "build/uap10.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "build/uap10.0/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "build/uap10.0/fr/Microsoft.TestPlatform.Utilities.resources.dll", - "build/uap10.0/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "build/uap10.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "build/uap10.0/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "build/uap10.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "build/uap10.0/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "build/uap10.0/it/Microsoft.TestPlatform.Utilities.resources.dll", - "build/uap10.0/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "build/uap10.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "build/uap10.0/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "build/uap10.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "build/uap10.0/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "build/uap10.0/ja/Microsoft.TestPlatform.Utilities.resources.dll", - "build/uap10.0/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "build/uap10.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "build/uap10.0/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "build/uap10.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "build/uap10.0/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "build/uap10.0/ko/Microsoft.TestPlatform.Utilities.resources.dll", - "build/uap10.0/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "build/uap10.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "build/uap10.0/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "build/uap10.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "build/uap10.0/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "build/uap10.0/pl/Microsoft.TestPlatform.Utilities.resources.dll", - "build/uap10.0/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "build/uap10.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "build/uap10.0/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "build/uap10.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "build/uap10.0/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "build/uap10.0/pt-BR/Microsoft.TestPlatform.Utilities.resources.dll", - "build/uap10.0/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "build/uap10.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "build/uap10.0/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "build/uap10.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "build/uap10.0/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "build/uap10.0/ru/Microsoft.TestPlatform.Utilities.resources.dll", - "build/uap10.0/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "build/uap10.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "build/uap10.0/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "build/uap10.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "build/uap10.0/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "build/uap10.0/tr/Microsoft.TestPlatform.Utilities.resources.dll", - "build/uap10.0/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "build/uap10.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "build/uap10.0/x64/msdia140.dll", - "build/uap10.0/x86/msdia140.dll", - "build/uap10.0/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "build/uap10.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "build/uap10.0/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "build/uap10.0/zh-Hans/Microsoft.TestPlatform.Utilities.resources.dll", - "build/uap10.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "build/uap10.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "build/uap10.0/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "build/uap10.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "build/uap10.0/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "build/uap10.0/zh-Hant/Microsoft.TestPlatform.Utilities.resources.dll", - "build/uap10.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "build/uap10.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net45/_._", - "lib/netstandard1.5/Microsoft.TestPlatform.CommunicationUtilities.dll", - "lib/netstandard1.5/Microsoft.TestPlatform.CrossPlatEngine.dll", - "lib/netstandard1.5/Microsoft.TestPlatform.Utilities.dll", - "lib/netstandard1.5/Microsoft.VisualStudio.TestPlatform.Common.dll", - "lib/netstandard1.5/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netstandard1.5/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netstandard1.5/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netstandard1.5/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netstandard1.5/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netstandard1.5/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netstandard1.5/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netstandard1.5/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netstandard1.5/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netstandard1.5/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netstandard1.5/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netstandard1.5/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netstandard1.5/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netstandard1.5/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netstandard1.5/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netstandard1.5/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netstandard1.5/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netstandard1.5/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netstandard1.5/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netstandard1.5/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netstandard1.5/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netstandard1.5/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netstandard1.5/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netstandard1.5/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netstandard1.5/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netstandard1.5/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netstandard1.5/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netstandard1.5/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netstandard1.5/testhost.deps.json", - "lib/netstandard1.5/testhost.dll", - "lib/netstandard1.5/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netstandard1.5/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netstandard1.5/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netstandard1.5/x64/msdia140.dll", - "lib/netstandard1.5/x86/msdia140.dll", - "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netstandard1.5/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netstandard1.5/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/uap10.0/Microsoft.TestPlatform.CommunicationUtilities.dll", - "lib/uap10.0/Microsoft.TestPlatform.CrossPlatEngine.dll", - "lib/uap10.0/Microsoft.TestPlatform.Utilities.dll", - "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.Common.dll", - "lib/uap10.0/testhost.dll", - "microsoft.testplatform.testhost.16.2.0.nupkg.sha512", - "microsoft.testplatform.testhost.nuspec" - ] - }, - "Microsoft.Win32.Primitives/4.3.0": { - "sha512": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", - "type": "package", - "path": "microsoft.win32.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/Microsoft.Win32.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "microsoft.win32.primitives.4.3.0.nupkg.sha512", - "microsoft.win32.primitives.nuspec", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "Microsoft.Win32.Registry/4.0.0": { - "sha512": "q+eLtROUAQ3OxYA5mpQrgyFgzLQxIyrfT2eLpYX5IEPlHmIio2nh4F5bgOaQoGOV865kFKZZso9Oq9RlazvXtg==", - "type": "package", - "path": "microsoft.win32.registry/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/Microsoft.Win32.Registry.dll", - "microsoft.win32.registry.4.0.0.nupkg.sha512", - "microsoft.win32.registry.nuspec", - "ref/net46/Microsoft.Win32.Registry.dll", - "ref/netstandard1.3/Microsoft.Win32.Registry.dll", - "ref/netstandard1.3/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml", - "runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/net46/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/netcore50/_._", - "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll" - ] - }, - "MongoDB.Bson/2.11.2": { - "sha512": "7vJoaUKPPnW6Ej0r4UHV8DeYD0/SKk/73WlDfc5JMRJRjTj3jRUtGIXwpaFYq3wT8MRHmLwbM/KvkEAb7deHRw==", - "type": "package", - "path": "mongodb.bson/2.11.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "License.txt", - "lib/net452/MongoDB.Bson.dll", - "lib/net452/MongoDB.Bson.xml", - "lib/netstandard1.5/MongoDB.Bson.dll", - "lib/netstandard1.5/MongoDB.Bson.xml", - "lib/netstandard2.0/MongoDB.Bson.dll", - "lib/netstandard2.0/MongoDB.Bson.xml", - "mongodb.bson.2.11.2.nupkg.sha512", - "mongodb.bson.nuspec", - "packageIcon.png" - ] - }, - "MongoDB.Driver/2.11.2": { - "sha512": "4DT/VcE/6sw73tInWmQ1C92p1kHgKiuRx/DgYRtaUUILRaAdL8X1Gl3f8FXNMwH2rzH+KhOYCliYK7/+XWWZIw==", - "type": "package", - "path": "mongodb.driver/2.11.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "License.txt", - "lib/net452/MongoDB.Driver.dll", - "lib/net452/MongoDB.Driver.xml", - "lib/netstandard1.5/MongoDB.Driver.dll", - "lib/netstandard1.5/MongoDB.Driver.xml", - "lib/netstandard2.0/MongoDB.Driver.dll", - "lib/netstandard2.0/MongoDB.Driver.xml", - "mongodb.driver.2.11.2.nupkg.sha512", - "mongodb.driver.nuspec", - "packageIcon.png" - ] - }, - "MongoDB.Driver.Core/2.11.2": { - "sha512": "e5/q9bqGEfGSsAq9Gn6+qWKEPs0s/U41tgfcWNtwAEpyg/btWO4RkeV0Jv8tG/KaXey1E151npmDPcwTrg7qjQ==", - "type": "package", - "path": "mongodb.driver.core/2.11.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "License.txt", - "THIRD-PARTY-NOTICES", - "build/MongoDB.Driver.Core.targets", - "content/Core/Compression/Snappy/lib/win/snappy32.dll", - "content/Core/Compression/Snappy/lib/win/snappy64.dll", - "content/Core/Compression/Zstandard/lib/win/libzstd.dll", - "contentFiles/any/net452/Core/Compression/Snappy/lib/win/snappy32.dll", - "contentFiles/any/net452/Core/Compression/Snappy/lib/win/snappy64.dll", - "contentFiles/any/net452/Core/Compression/Zstandard/lib/win/libzstd.dll", - "contentFiles/any/netstandard1.5/Core/Compression/Snappy/lib/win/snappy32.dll", - "contentFiles/any/netstandard1.5/Core/Compression/Snappy/lib/win/snappy64.dll", - "contentFiles/any/netstandard1.5/Core/Compression/Zstandard/lib/win/libzstd.dll", - "contentFiles/any/netstandard2.0/Core/Compression/Snappy/lib/win/snappy32.dll", - "contentFiles/any/netstandard2.0/Core/Compression/Snappy/lib/win/snappy64.dll", - "contentFiles/any/netstandard2.0/Core/Compression/Zstandard/lib/win/libzstd.dll", - "lib/net452/MongoDB.Driver.Core.dll", - "lib/net452/MongoDB.Driver.Core.xml", - "lib/netstandard1.5/MongoDB.Driver.Core.dll", - "lib/netstandard1.5/MongoDB.Driver.Core.xml", - "lib/netstandard2.0/MongoDB.Driver.Core.dll", - "lib/netstandard2.0/MongoDB.Driver.Core.xml", - "mongodb.driver.core.2.11.2.nupkg.sha512", - "mongodb.driver.core.nuspec", - "packageIcon.png", - "runtimes/win/native/libzstd.dll", - "runtimes/win/native/snappy32.dll", - "runtimes/win/native/snappy64.dll" - ] - }, - "MongoDB.Libmongocrypt/1.0.0": { - "sha512": "zkcsra5riDiKXqOiCKskycakpbO5RYkuUWG+z2AZML3A4NShvAs/D3InwkxH0OcbjZQOWo763Hjdmhr0AaylcA==", - "type": "package", - "path": "mongodb.libmongocrypt/1.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "License.txt", - "build/MongoDB.Libmongocrypt.targets", - "lib/net452/MongoDB.Libmongocrypt.dll", - "lib/netstandard1.5/MongoDB.Libmongocrypt.dll", - "mongodb.libmongocrypt.1.0.0.nupkg.sha512", - "mongodb.libmongocrypt.nuspec", - "x64/native/windows/mongocrypt.dll" - ] - }, - "Moq/4.14.6": { - "sha512": "o0SH3WvqGmBSePHlHgX3TkRorqw5cqUJUCnBMJyeIIGxLT7/J6cK8YddD35qB+PeALtYpJ48894m5iiAZ0kxDA==", - "type": "package", - "path": "moq/4.14.6", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/Moq.dll", - "lib/net45/Moq.xml", - "lib/netstandard2.0/Moq.dll", - "lib/netstandard2.0/Moq.xml", - "moq.4.14.6.nupkg.sha512", - "moq.nuspec" - ] - }, - "MSTest.TestAdapter/2.0.0": { - "sha512": "VoXDhx+a/44RmQYpkrYWe3D6AP6kjqibe02NOj1t8Zn9uo8e90gXW22SYj3geEwNTcEdMg2XMq0SI2P0Fl2Trw==", - "type": "package", - "path": "mstest.testadapter/2.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.txt", - "build/_common/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll", - "build/_common/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.Interface.dll", - "build/_common/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", - "build/_common/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", - "build/_common/cs/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", - "build/_common/cs/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", - "build/_common/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", - "build/_common/de/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", - "build/_common/de/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", - "build/_common/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", - "build/_common/es/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", - "build/_common/es/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", - "build/_common/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", - "build/_common/fr/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", - "build/_common/fr/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", - "build/_common/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", - "build/_common/it/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", - "build/_common/it/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", - "build/_common/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", - "build/_common/ja/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", - "build/_common/ja/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", - "build/_common/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", - "build/_common/ko/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", - "build/_common/ko/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", - "build/_common/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", - "build/_common/pl/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", - "build/_common/pl/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", - "build/_common/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", - "build/_common/pt/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", - "build/_common/pt/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", - "build/_common/pt/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", - "build/_common/ru/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", - "build/_common/ru/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", - "build/_common/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", - "build/_common/tr/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", - "build/_common/tr/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", - "build/_common/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", - "build/_common/zh-Hans/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", - "build/_common/zh-Hans/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", - "build/_common/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", - "build/_common/zh-Hant/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", - "build/_common/zh-Hant/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", - "build/_common/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", - "build/net45/MSTest.TestAdapter.props", - "build/net45/MSTest.TestAdapter.targets", - "build/netcoreapp1.0/MSTest.TestAdapter.props", - "build/netcoreapp1.0/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", - "build/uap10.0/MSTest.TestAdapter.props", - "build/uap10.0/MSTest.TestAdapter.targets", - "build/uap10.0/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", - "mstest.testadapter.2.0.0.nupkg.sha512", - "mstest.testadapter.nuspec" - ] - }, - "MSTest.TestFramework/2.0.0": { - "sha512": "gDlwhzIqdhUB+tirA80c6jUnlAsWBl2RXsKwmCbeZ1XkTjufrZIrBs7cvBdxbzddAEFOZuqfeCHJK/rp0vloZg==", - "type": "package", - "path": "mstest.testframework/2.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.txt", - "lib/net45/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.XML", - "lib/net45/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", - "lib/net45/Microsoft.VisualStudio.TestPlatform.TestFramework.XML", - "lib/net45/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", - "lib/net45/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/net45/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/net45/de/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/net45/de/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/net45/es/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/net45/es/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/net45/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/net45/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/net45/it/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/net45/it/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/net45/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/net45/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/net45/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/net45/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/net45/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/net45/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/net45/pt/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/net45/pt/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/net45/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/net45/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/net45/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/net45/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/net45/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/net45/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/net45/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/net45/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.XML", - "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", - "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.XML", - "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", - "lib/netstandard1.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/netstandard1.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/netstandard1.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/netstandard1.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/netstandard1.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/netstandard1.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/netstandard1.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/netstandard1.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/netstandard1.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/netstandard1.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/netstandard1.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/netstandard1.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/netstandard1.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/netstandard1.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/netstandard1.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/netstandard1.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/netstandard1.0/pt/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/netstandard1.0/pt/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/netstandard1.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/netstandard1.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/netstandard1.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/netstandard1.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/netstandard1.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/netstandard1.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/netstandard1.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/netstandard1.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.XML", - "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", - "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.XML", - "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", - "lib/uap10.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/uap10.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/uap10.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/uap10.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/uap10.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/uap10.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/uap10.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/uap10.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/uap10.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/uap10.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/uap10.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/uap10.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/uap10.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/uap10.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/uap10.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/uap10.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/uap10.0/pt/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/uap10.0/pt/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/uap10.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/uap10.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/uap10.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/uap10.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/uap10.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/uap10.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "lib/uap10.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", - "lib/uap10.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", - "mstest.testframework.2.0.0.nupkg.sha512", - "mstest.testframework.nuspec" - ] - }, - "NETStandard.Library/1.6.1": { - "sha512": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==", - "type": "package", - "path": "netstandard.library/1.6.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "netstandard.library.1.6.1.nupkg.sha512", - "netstandard.library.nuspec" - ] - }, - "Newtonsoft.Json/12.0.3": { - "sha512": "6mgjfnRB4jKMlzHSl+VD+oUc1IebOZabkbyWj2RiTgWwYPPuaK1H97G1sHqGwPlS5npiF5Q0OrxN1wni2n5QWg==", - "type": "package", - "path": "newtonsoft.json/12.0.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "lib/net20/Newtonsoft.Json.dll", - "lib/net20/Newtonsoft.Json.xml", - "lib/net35/Newtonsoft.Json.dll", - "lib/net35/Newtonsoft.Json.xml", - "lib/net40/Newtonsoft.Json.dll", - "lib/net40/Newtonsoft.Json.xml", - "lib/net45/Newtonsoft.Json.dll", - "lib/net45/Newtonsoft.Json.xml", - "lib/netstandard1.0/Newtonsoft.Json.dll", - "lib/netstandard1.0/Newtonsoft.Json.xml", - "lib/netstandard1.3/Newtonsoft.Json.dll", - "lib/netstandard1.3/Newtonsoft.Json.xml", - "lib/netstandard2.0/Newtonsoft.Json.dll", - "lib/netstandard2.0/Newtonsoft.Json.xml", - "lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.dll", - "lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.xml", - "lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.dll", - "lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.xml", - "newtonsoft.json.12.0.3.nupkg.sha512", - "newtonsoft.json.nuspec", - "packageIcon.png" - ] - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==", - "type": "package", - "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==", - "type": "package", - "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==", - "type": "package", - "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.native.System/4.3.0": { - "sha512": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", - "type": "package", - "path": "runtime.native.system/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.4.3.0.nupkg.sha512", - "runtime.native.system.nuspec" - ] - }, - "runtime.native.System.IO.Compression/4.3.0": { - "sha512": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==", - "type": "package", - "path": "runtime.native.system.io.compression/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.io.compression.4.3.0.nupkg.sha512", - "runtime.native.system.io.compression.nuspec" - ] - }, - "runtime.native.System.Net.Http/4.3.0": { - "sha512": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", - "type": "package", - "path": "runtime.native.system.net.http/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.net.http.4.3.0.nupkg.sha512", - "runtime.native.system.net.http.nuspec" - ] - }, - "runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "sha512": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", - "type": "package", - "path": "runtime.native.system.security.cryptography.apple/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", - "runtime.native.system.security.cryptography.apple.nuspec" - ] - }, - "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==", - "type": "package", - "path": "runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.native.system.security.cryptography.openssl.nuspec" - ] - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==", - "type": "package", - "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==", - "type": "package", - "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "sha512": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==", - "type": "package", - "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", - "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.nuspec", - "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib" - ] - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==", - "type": "package", - "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib" - ] - }, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==", - "type": "package", - "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==", - "type": "package", - "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==", - "type": "package", - "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==", - "type": "package", - "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "SharpCompress/0.23.0": { - "sha512": "HBbT47JHvNrsZX2dTBzUBOSzBt+EmIRGLIBkbxcP6Jef7DB4eFWQX5iHWV3Nj7hABFPCjISrZ8s0z72nF2zFHQ==", - "type": "package", - "path": "sharpcompress/0.23.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net35/SharpCompress.dll", - "lib/net45/SharpCompress.dll", - "lib/netstandard1.0/SharpCompress.dll", - "lib/netstandard1.3/SharpCompress.dll", - "lib/netstandard2.0/SharpCompress.dll", - "sharpcompress.0.23.0.nupkg.sha512", - "sharpcompress.nuspec" - ] - }, - "System.AppContext/4.3.0": { - "sha512": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==", - "type": "package", - "path": "system.appcontext/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.AppContext.dll", - "lib/net463/System.AppContext.dll", - "lib/netcore50/System.AppContext.dll", - "lib/netstandard1.6/System.AppContext.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.AppContext.dll", - "ref/net463/System.AppContext.dll", - "ref/netstandard/_._", - "ref/netstandard1.3/System.AppContext.dll", - "ref/netstandard1.3/System.AppContext.xml", - "ref/netstandard1.3/de/System.AppContext.xml", - "ref/netstandard1.3/es/System.AppContext.xml", - "ref/netstandard1.3/fr/System.AppContext.xml", - "ref/netstandard1.3/it/System.AppContext.xml", - "ref/netstandard1.3/ja/System.AppContext.xml", - "ref/netstandard1.3/ko/System.AppContext.xml", - "ref/netstandard1.3/ru/System.AppContext.xml", - "ref/netstandard1.3/zh-hans/System.AppContext.xml", - "ref/netstandard1.3/zh-hant/System.AppContext.xml", - "ref/netstandard1.6/System.AppContext.dll", - "ref/netstandard1.6/System.AppContext.xml", - "ref/netstandard1.6/de/System.AppContext.xml", - "ref/netstandard1.6/es/System.AppContext.xml", - "ref/netstandard1.6/fr/System.AppContext.xml", - "ref/netstandard1.6/it/System.AppContext.xml", - "ref/netstandard1.6/ja/System.AppContext.xml", - "ref/netstandard1.6/ko/System.AppContext.xml", - "ref/netstandard1.6/ru/System.AppContext.xml", - "ref/netstandard1.6/zh-hans/System.AppContext.xml", - "ref/netstandard1.6/zh-hant/System.AppContext.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.AppContext.dll", - "system.appcontext.4.3.0.nupkg.sha512", - "system.appcontext.nuspec" - ] - }, - "System.Buffers/4.4.0": { - "sha512": "AwarXzzoDwX6BgrhjoJsk6tUezZEozOT5Y9QKF94Gl4JK91I4PIIBkBco9068Y9/Dra8Dkbie99kXB8+1BaYKw==", - "type": "package", - "path": "system.buffers/4.4.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.0/_._", - "lib/netstandard1.1/System.Buffers.dll", - "lib/netstandard1.1/System.Buffers.xml", - "lib/netstandard2.0/System.Buffers.dll", - "lib/netstandard2.0/System.Buffers.xml", - "ref/netcoreapp2.0/_._", - "ref/netstandard1.1/System.Buffers.dll", - "ref/netstandard1.1/System.Buffers.xml", - "ref/netstandard2.0/System.Buffers.dll", - "ref/netstandard2.0/System.Buffers.xml", - "system.buffers.4.4.0.nupkg.sha512", - "system.buffers.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Collections/4.3.0": { - "sha512": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", - "type": "package", - "path": "system.collections/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.dll", - "ref/netcore50/System.Collections.xml", - "ref/netcore50/de/System.Collections.xml", - "ref/netcore50/es/System.Collections.xml", - "ref/netcore50/fr/System.Collections.xml", - "ref/netcore50/it/System.Collections.xml", - "ref/netcore50/ja/System.Collections.xml", - "ref/netcore50/ko/System.Collections.xml", - "ref/netcore50/ru/System.Collections.xml", - "ref/netcore50/zh-hans/System.Collections.xml", - "ref/netcore50/zh-hant/System.Collections.xml", - "ref/netstandard1.0/System.Collections.dll", - "ref/netstandard1.0/System.Collections.xml", - "ref/netstandard1.0/de/System.Collections.xml", - "ref/netstandard1.0/es/System.Collections.xml", - "ref/netstandard1.0/fr/System.Collections.xml", - "ref/netstandard1.0/it/System.Collections.xml", - "ref/netstandard1.0/ja/System.Collections.xml", - "ref/netstandard1.0/ko/System.Collections.xml", - "ref/netstandard1.0/ru/System.Collections.xml", - "ref/netstandard1.0/zh-hans/System.Collections.xml", - "ref/netstandard1.0/zh-hant/System.Collections.xml", - "ref/netstandard1.3/System.Collections.dll", - "ref/netstandard1.3/System.Collections.xml", - "ref/netstandard1.3/de/System.Collections.xml", - "ref/netstandard1.3/es/System.Collections.xml", - "ref/netstandard1.3/fr/System.Collections.xml", - "ref/netstandard1.3/it/System.Collections.xml", - "ref/netstandard1.3/ja/System.Collections.xml", - "ref/netstandard1.3/ko/System.Collections.xml", - "ref/netstandard1.3/ru/System.Collections.xml", - "ref/netstandard1.3/zh-hans/System.Collections.xml", - "ref/netstandard1.3/zh-hant/System.Collections.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.collections.4.3.0.nupkg.sha512", - "system.collections.nuspec" - ] - }, - "System.Collections.Concurrent/4.3.0": { - "sha512": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", - "type": "package", - "path": "system.collections.concurrent/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Collections.Concurrent.dll", - "lib/netstandard1.3/System.Collections.Concurrent.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.Concurrent.dll", - "ref/netcore50/System.Collections.Concurrent.xml", - "ref/netcore50/de/System.Collections.Concurrent.xml", - "ref/netcore50/es/System.Collections.Concurrent.xml", - "ref/netcore50/fr/System.Collections.Concurrent.xml", - "ref/netcore50/it/System.Collections.Concurrent.xml", - "ref/netcore50/ja/System.Collections.Concurrent.xml", - "ref/netcore50/ko/System.Collections.Concurrent.xml", - "ref/netcore50/ru/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.1/System.Collections.Concurrent.dll", - "ref/netstandard1.1/System.Collections.Concurrent.xml", - "ref/netstandard1.1/de/System.Collections.Concurrent.xml", - "ref/netstandard1.1/es/System.Collections.Concurrent.xml", - "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.1/it/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.3/System.Collections.Concurrent.dll", - "ref/netstandard1.3/System.Collections.Concurrent.xml", - "ref/netstandard1.3/de/System.Collections.Concurrent.xml", - "ref/netstandard1.3/es/System.Collections.Concurrent.xml", - "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.3/it/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.collections.concurrent.4.3.0.nupkg.sha512", - "system.collections.concurrent.nuspec" - ] - }, - "System.Collections.Immutable/1.7.1": { - "sha512": "B43Zsz5EfMwyEbnObwRxW5u85fzJma3lrDeGcSAV1qkhSRTNY5uXAByTn9h9ddNdhM+4/YoLc/CI43umjwIl9Q==", - "type": "package", - "path": "system.collections.immutable/1.7.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/System.Collections.Immutable.dll", - "lib/net461/System.Collections.Immutable.xml", - "lib/netstandard1.0/System.Collections.Immutable.dll", - "lib/netstandard1.0/System.Collections.Immutable.xml", - "lib/netstandard1.3/System.Collections.Immutable.dll", - "lib/netstandard1.3/System.Collections.Immutable.xml", - "lib/netstandard2.0/System.Collections.Immutable.dll", - "lib/netstandard2.0/System.Collections.Immutable.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml", - "system.collections.immutable.1.7.1.nupkg.sha512", - "system.collections.immutable.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Collections.NonGeneric/4.3.0": { - "sha512": "prtjIEMhGUnQq6RnPEYLpFt8AtLbp9yq2zxOSrY7KJJZrw25Fi97IzBqY7iqssbM61Ek5b8f3MG/sG1N2sN5KA==", - "type": "package", - "path": "system.collections.nongeneric/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Collections.NonGeneric.dll", - "lib/netstandard1.3/System.Collections.NonGeneric.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Collections.NonGeneric.dll", - "ref/netstandard1.3/System.Collections.NonGeneric.dll", - "ref/netstandard1.3/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/de/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/es/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/fr/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/it/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ja/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ko/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ru/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/zh-hans/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/zh-hant/System.Collections.NonGeneric.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.collections.nongeneric.4.3.0.nupkg.sha512", - "system.collections.nongeneric.nuspec" - ] - }, - "System.Collections.Specialized/4.3.0": { - "sha512": "Epx8PoVZR0iuOnJJDzp7pWvdfMMOAvpUo95pC4ScH2mJuXkKA2Y4aR3cG9qt2klHgSons1WFh4kcGW7cSXvrxg==", - "type": "package", - "path": "system.collections.specialized/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Collections.Specialized.dll", - "lib/netstandard1.3/System.Collections.Specialized.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Collections.Specialized.dll", - "ref/netstandard1.3/System.Collections.Specialized.dll", - "ref/netstandard1.3/System.Collections.Specialized.xml", - "ref/netstandard1.3/de/System.Collections.Specialized.xml", - "ref/netstandard1.3/es/System.Collections.Specialized.xml", - "ref/netstandard1.3/fr/System.Collections.Specialized.xml", - "ref/netstandard1.3/it/System.Collections.Specialized.xml", - "ref/netstandard1.3/ja/System.Collections.Specialized.xml", - "ref/netstandard1.3/ko/System.Collections.Specialized.xml", - "ref/netstandard1.3/ru/System.Collections.Specialized.xml", - "ref/netstandard1.3/zh-hans/System.Collections.Specialized.xml", - "ref/netstandard1.3/zh-hant/System.Collections.Specialized.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.collections.specialized.4.3.0.nupkg.sha512", - "system.collections.specialized.nuspec" - ] - }, - "System.ComponentModel/4.3.0": { - "sha512": "VyGn1jGRZVfxnh8EdvDCi71v3bMXrsu8aYJOwoV7SNDLVhiEqwP86pPMyRGsDsxhXAm2b3o9OIqeETfN5qfezw==", - "type": "package", - "path": "system.componentmodel/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ComponentModel.dll", - "lib/netstandard1.3/System.ComponentModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ComponentModel.dll", - "ref/netcore50/System.ComponentModel.xml", - "ref/netcore50/de/System.ComponentModel.xml", - "ref/netcore50/es/System.ComponentModel.xml", - "ref/netcore50/fr/System.ComponentModel.xml", - "ref/netcore50/it/System.ComponentModel.xml", - "ref/netcore50/ja/System.ComponentModel.xml", - "ref/netcore50/ko/System.ComponentModel.xml", - "ref/netcore50/ru/System.ComponentModel.xml", - "ref/netcore50/zh-hans/System.ComponentModel.xml", - "ref/netcore50/zh-hant/System.ComponentModel.xml", - "ref/netstandard1.0/System.ComponentModel.dll", - "ref/netstandard1.0/System.ComponentModel.xml", - "ref/netstandard1.0/de/System.ComponentModel.xml", - "ref/netstandard1.0/es/System.ComponentModel.xml", - "ref/netstandard1.0/fr/System.ComponentModel.xml", - "ref/netstandard1.0/it/System.ComponentModel.xml", - "ref/netstandard1.0/ja/System.ComponentModel.xml", - "ref/netstandard1.0/ko/System.ComponentModel.xml", - "ref/netstandard1.0/ru/System.ComponentModel.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.componentmodel.4.3.0.nupkg.sha512", - "system.componentmodel.nuspec" - ] - }, - "System.ComponentModel.Annotations/4.7.0": { - "sha512": "0YFqjhp/mYkDGpU0Ye1GjE53HMp9UVfGN7seGpAMttAC0C40v5gw598jCgpbBLMmCo0E5YRLBv5Z2doypO49ZQ==", - "type": "package", - "path": "system.componentmodel.annotations/4.7.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net461/System.ComponentModel.Annotations.dll", - "lib/netcore50/System.ComponentModel.Annotations.dll", - "lib/netstandard1.4/System.ComponentModel.Annotations.dll", - "lib/netstandard2.0/System.ComponentModel.Annotations.dll", - "lib/netstandard2.1/System.ComponentModel.Annotations.dll", - "lib/netstandard2.1/System.ComponentModel.Annotations.xml", - "lib/portable-net45+win8/_._", - "lib/win8/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net461/System.ComponentModel.Annotations.dll", - "ref/net461/System.ComponentModel.Annotations.xml", - "ref/netcore50/System.ComponentModel.Annotations.dll", - "ref/netcore50/System.ComponentModel.Annotations.xml", - "ref/netcore50/de/System.ComponentModel.Annotations.xml", - "ref/netcore50/es/System.ComponentModel.Annotations.xml", - "ref/netcore50/fr/System.ComponentModel.Annotations.xml", - "ref/netcore50/it/System.ComponentModel.Annotations.xml", - "ref/netcore50/ja/System.ComponentModel.Annotations.xml", - "ref/netcore50/ko/System.ComponentModel.Annotations.xml", - "ref/netcore50/ru/System.ComponentModel.Annotations.xml", - "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/System.ComponentModel.Annotations.dll", - "ref/netstandard1.1/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/System.ComponentModel.Annotations.dll", - "ref/netstandard1.3/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/System.ComponentModel.Annotations.dll", - "ref/netstandard1.4/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard2.0/System.ComponentModel.Annotations.dll", - "ref/netstandard2.0/System.ComponentModel.Annotations.xml", - "ref/netstandard2.1/System.ComponentModel.Annotations.dll", - "ref/netstandard2.1/System.ComponentModel.Annotations.xml", - "ref/portable-net45+win8/_._", - "ref/win8/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.componentmodel.annotations.4.7.0.nupkg.sha512", - "system.componentmodel.annotations.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.ComponentModel.EventBasedAsync/4.0.11": { - "sha512": "Z7SO6vvQIR84daPE4uhaNdef9CjgjDMGYkas8epUhf0U3WGuaGgZ0Mm4QuNycMdbHUY8KEdZrtgxonkAiJaAlA==", - "type": "package", - "path": "system.componentmodel.eventbasedasync/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ComponentModel.EventBasedAsync.dll", - "lib/netstandard1.3/System.ComponentModel.EventBasedAsync.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ComponentModel.EventBasedAsync.dll", - "ref/netcore50/System.ComponentModel.EventBasedAsync.xml", - "ref/netcore50/de/System.ComponentModel.EventBasedAsync.xml", - "ref/netcore50/es/System.ComponentModel.EventBasedAsync.xml", - "ref/netcore50/fr/System.ComponentModel.EventBasedAsync.xml", - "ref/netcore50/it/System.ComponentModel.EventBasedAsync.xml", - "ref/netcore50/ja/System.ComponentModel.EventBasedAsync.xml", - "ref/netcore50/ko/System.ComponentModel.EventBasedAsync.xml", - "ref/netcore50/ru/System.ComponentModel.EventBasedAsync.xml", - "ref/netcore50/zh-hans/System.ComponentModel.EventBasedAsync.xml", - "ref/netcore50/zh-hant/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.0/System.ComponentModel.EventBasedAsync.dll", - "ref/netstandard1.0/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.0/de/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.0/es/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.0/fr/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.0/it/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.0/ja/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.0/ko/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.0/ru/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.3/System.ComponentModel.EventBasedAsync.dll", - "ref/netstandard1.3/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.3/de/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.3/es/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.3/fr/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.3/it/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.3/ja/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.3/ko/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.3/ru/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.3/zh-hans/System.ComponentModel.EventBasedAsync.xml", - "ref/netstandard1.3/zh-hant/System.ComponentModel.EventBasedAsync.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.componentmodel.eventbasedasync.4.0.11.nupkg.sha512", - "system.componentmodel.eventbasedasync.nuspec" - ] - }, - "System.ComponentModel.Primitives/4.3.0": { - "sha512": "j8GUkCpM8V4d4vhLIIoBLGey2Z5bCkMVNjEZseyAlm4n5arcsJOeI3zkUP+zvZgzsbLTYh4lYeP/ZD/gdIAPrw==", - "type": "package", - "path": "system.componentmodel.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.ComponentModel.Primitives.dll", - "lib/netstandard1.0/System.ComponentModel.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/System.ComponentModel.Primitives.dll", - "ref/netstandard1.0/System.ComponentModel.Primitives.dll", - "ref/netstandard1.0/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/de/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/es/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/fr/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/it/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/ja/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/ko/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/ru/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.componentmodel.primitives.4.3.0.nupkg.sha512", - "system.componentmodel.primitives.nuspec" - ] - }, - "System.ComponentModel.TypeConverter/4.3.0": { - "sha512": "16pQ6P+EdhcXzPiEK4kbA953Fu0MNG2ovxTZU81/qsCd1zPRsKc3uif5NgvllCY598k6bI0KUyKW8fanlfaDQg==", - "type": "package", - "path": "system.componentmodel.typeconverter/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.ComponentModel.TypeConverter.dll", - "lib/net462/System.ComponentModel.TypeConverter.dll", - "lib/netstandard1.0/System.ComponentModel.TypeConverter.dll", - "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/System.ComponentModel.TypeConverter.dll", - "ref/net462/System.ComponentModel.TypeConverter.dll", - "ref/netstandard1.0/System.ComponentModel.TypeConverter.dll", - "ref/netstandard1.0/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/de/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/es/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/fr/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/it/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/ja/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/ko/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/ru/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/System.ComponentModel.TypeConverter.dll", - "ref/netstandard1.5/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/de/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/es/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/fr/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/it/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/ja/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/ko/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/ru/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/zh-hans/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/zh-hant/System.ComponentModel.TypeConverter.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.componentmodel.typeconverter.4.3.0.nupkg.sha512", - "system.componentmodel.typeconverter.nuspec" - ] - }, - "System.Console/4.3.0": { - "sha512": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", - "type": "package", - "path": "system.console/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Console.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Console.dll", - "ref/netstandard1.3/System.Console.dll", - "ref/netstandard1.3/System.Console.xml", - "ref/netstandard1.3/de/System.Console.xml", - "ref/netstandard1.3/es/System.Console.xml", - "ref/netstandard1.3/fr/System.Console.xml", - "ref/netstandard1.3/it/System.Console.xml", - "ref/netstandard1.3/ja/System.Console.xml", - "ref/netstandard1.3/ko/System.Console.xml", - "ref/netstandard1.3/ru/System.Console.xml", - "ref/netstandard1.3/zh-hans/System.Console.xml", - "ref/netstandard1.3/zh-hant/System.Console.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.console.4.3.0.nupkg.sha512", - "system.console.nuspec" - ] - }, - "System.Diagnostics.Debug/4.3.0": { - "sha512": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", - "type": "package", - "path": "system.diagnostics.debug/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Debug.dll", - "ref/netcore50/System.Diagnostics.Debug.xml", - "ref/netcore50/de/System.Diagnostics.Debug.xml", - "ref/netcore50/es/System.Diagnostics.Debug.xml", - "ref/netcore50/fr/System.Diagnostics.Debug.xml", - "ref/netcore50/it/System.Diagnostics.Debug.xml", - "ref/netcore50/ja/System.Diagnostics.Debug.xml", - "ref/netcore50/ko/System.Diagnostics.Debug.xml", - "ref/netcore50/ru/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/System.Diagnostics.Debug.dll", - "ref/netstandard1.0/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/System.Diagnostics.Debug.dll", - "ref/netstandard1.3/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.diagnostics.debug.4.3.0.nupkg.sha512", - "system.diagnostics.debug.nuspec" - ] - }, - "System.Diagnostics.DiagnosticSource/4.7.1": { - "sha512": "j81Lovt90PDAq8kLpaJfJKV/rWdWuEk6jfV+MBkee33vzYLEUsy4gXK8laa9V2nZlLM9VM9yA/OOQxxPEJKAMw==", - "type": "package", - "path": "system.diagnostics.diagnosticsource/4.7.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net45/System.Diagnostics.DiagnosticSource.dll", - "lib/net45/System.Diagnostics.DiagnosticSource.xml", - "lib/net46/System.Diagnostics.DiagnosticSource.dll", - "lib/net46/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml", - "system.diagnostics.diagnosticsource.4.7.1.nupkg.sha512", - "system.diagnostics.diagnosticsource.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Diagnostics.Process/4.1.0": { - "sha512": "mpVZ5bnlSs3tTeJ6jYyDJEIa6tavhAd88lxq1zbYhkkCu0Pno2+gHXcvZcoygq2d8JxW3gojXqNJMTAshduqZA==", - "type": "package", - "path": "system.diagnostics.process/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.Process.dll", - "lib/net461/System.Diagnostics.Process.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.Process.dll", - "ref/net461/System.Diagnostics.Process.dll", - "ref/netstandard1.3/System.Diagnostics.Process.dll", - "ref/netstandard1.3/System.Diagnostics.Process.xml", - "ref/netstandard1.3/de/System.Diagnostics.Process.xml", - "ref/netstandard1.3/es/System.Diagnostics.Process.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Process.xml", - "ref/netstandard1.3/it/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Process.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Process.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Process.xml", - "ref/netstandard1.4/System.Diagnostics.Process.dll", - "ref/netstandard1.4/System.Diagnostics.Process.xml", - "ref/netstandard1.4/de/System.Diagnostics.Process.xml", - "ref/netstandard1.4/es/System.Diagnostics.Process.xml", - "ref/netstandard1.4/fr/System.Diagnostics.Process.xml", - "ref/netstandard1.4/it/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ja/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ko/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ru/System.Diagnostics.Process.xml", - "ref/netstandard1.4/zh-hans/System.Diagnostics.Process.xml", - "ref/netstandard1.4/zh-hant/System.Diagnostics.Process.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/win/lib/net46/System.Diagnostics.Process.dll", - "runtimes/win/lib/net461/System.Diagnostics.Process.dll", - "runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/win7/lib/netcore50/_._", - "system.diagnostics.process.4.1.0.nupkg.sha512", - "system.diagnostics.process.nuspec" - ] - }, - "System.Diagnostics.TextWriterTraceListener/4.3.0": { - "sha512": "F11kHWeiwYjFWto+kr8tt9ULMH0k8MsT1XmdCGPTLYHhWgN+2g7JsIZiXDrxlFGccSNkbjfwQy4xIS38gzUiZA==", - "type": "package", - "path": "system.diagnostics.textwritertracelistener/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.TextWriterTraceListener.dll", - "lib/netstandard1.3/System.Diagnostics.TextWriterTraceListener.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.TextWriterTraceListener.dll", - "ref/netstandard1.3/System.Diagnostics.TextWriterTraceListener.dll", - "ref/netstandard1.3/System.Diagnostics.TextWriterTraceListener.xml", - "ref/netstandard1.3/de/System.Diagnostics.TextWriterTraceListener.xml", - "ref/netstandard1.3/es/System.Diagnostics.TextWriterTraceListener.xml", - "ref/netstandard1.3/fr/System.Diagnostics.TextWriterTraceListener.xml", - "ref/netstandard1.3/it/System.Diagnostics.TextWriterTraceListener.xml", - "ref/netstandard1.3/ja/System.Diagnostics.TextWriterTraceListener.xml", - "ref/netstandard1.3/ko/System.Diagnostics.TextWriterTraceListener.xml", - "ref/netstandard1.3/ru/System.Diagnostics.TextWriterTraceListener.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.TextWriterTraceListener.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.TextWriterTraceListener.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.diagnostics.textwritertracelistener.4.3.0.nupkg.sha512", - "system.diagnostics.textwritertracelistener.nuspec" - ] - }, - "System.Diagnostics.Tools/4.3.0": { - "sha512": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", - "type": "package", - "path": "system.diagnostics.tools/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Tools.dll", - "ref/netcore50/System.Diagnostics.Tools.xml", - "ref/netcore50/de/System.Diagnostics.Tools.xml", - "ref/netcore50/es/System.Diagnostics.Tools.xml", - "ref/netcore50/fr/System.Diagnostics.Tools.xml", - "ref/netcore50/it/System.Diagnostics.Tools.xml", - "ref/netcore50/ja/System.Diagnostics.Tools.xml", - "ref/netcore50/ko/System.Diagnostics.Tools.xml", - "ref/netcore50/ru/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/System.Diagnostics.Tools.dll", - "ref/netstandard1.0/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.diagnostics.tools.4.3.0.nupkg.sha512", - "system.diagnostics.tools.nuspec" - ] - }, - "System.Diagnostics.TraceSource/4.3.0": { - "sha512": "VnYp1NxGx8Ww731y2LJ1vpfb/DKVNKEZ8Jsh5SgQTZREL/YpWRArgh9pI8CDLmgHspZmLL697CaLvH85qQpRiw==", - "type": "package", - "path": "system.diagnostics.tracesource/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.TraceSource.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.TraceSource.dll", - "ref/netstandard1.3/System.Diagnostics.TraceSource.dll", - "ref/netstandard1.3/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/de/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/es/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/fr/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/it/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/ja/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/ko/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/ru/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.TraceSource.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll", - "runtimes/win/lib/net46/System.Diagnostics.TraceSource.dll", - "runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll", - "system.diagnostics.tracesource.4.3.0.nupkg.sha512", - "system.diagnostics.tracesource.nuspec" - ] - }, - "System.Diagnostics.Tracing/4.3.0": { - "sha512": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", - "type": "package", - "path": "system.diagnostics.tracing/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Diagnostics.Tracing.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.xml", - "ref/netcore50/de/System.Diagnostics.Tracing.xml", - "ref/netcore50/es/System.Diagnostics.Tracing.xml", - "ref/netcore50/fr/System.Diagnostics.Tracing.xml", - "ref/netcore50/it/System.Diagnostics.Tracing.xml", - "ref/netcore50/ja/System.Diagnostics.Tracing.xml", - "ref/netcore50/ko/System.Diagnostics.Tracing.xml", - "ref/netcore50/ru/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/System.Diagnostics.Tracing.dll", - "ref/netstandard1.1/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/System.Diagnostics.Tracing.dll", - "ref/netstandard1.2/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/System.Diagnostics.Tracing.dll", - "ref/netstandard1.3/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/System.Diagnostics.Tracing.dll", - "ref/netstandard1.5/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.diagnostics.tracing.4.3.0.nupkg.sha512", - "system.diagnostics.tracing.nuspec" - ] - }, - "System.Dynamic.Runtime/4.3.0": { - "sha512": "SNVi1E/vfWUAs/WYKhE9+qlS6KqK0YVhnlT0HQtr8pMIA8YX3lwy3uPMownDwdYISBdmAF/2holEIldVp85Wag==", - "type": "package", - "path": "system.dynamic.runtime/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Dynamic.Runtime.dll", - "lib/netstandard1.3/System.Dynamic.Runtime.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Dynamic.Runtime.dll", - "ref/netcore50/System.Dynamic.Runtime.xml", - "ref/netcore50/de/System.Dynamic.Runtime.xml", - "ref/netcore50/es/System.Dynamic.Runtime.xml", - "ref/netcore50/fr/System.Dynamic.Runtime.xml", - "ref/netcore50/it/System.Dynamic.Runtime.xml", - "ref/netcore50/ja/System.Dynamic.Runtime.xml", - "ref/netcore50/ko/System.Dynamic.Runtime.xml", - "ref/netcore50/ru/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hans/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/System.Dynamic.Runtime.dll", - "ref/netstandard1.0/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/System.Dynamic.Runtime.dll", - "ref/netstandard1.3/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll", - "system.dynamic.runtime.4.3.0.nupkg.sha512", - "system.dynamic.runtime.nuspec" - ] - }, - "System.Globalization/4.3.0": { - "sha512": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", - "type": "package", - "path": "system.globalization/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Globalization.dll", - "ref/netcore50/System.Globalization.xml", - "ref/netcore50/de/System.Globalization.xml", - "ref/netcore50/es/System.Globalization.xml", - "ref/netcore50/fr/System.Globalization.xml", - "ref/netcore50/it/System.Globalization.xml", - "ref/netcore50/ja/System.Globalization.xml", - "ref/netcore50/ko/System.Globalization.xml", - "ref/netcore50/ru/System.Globalization.xml", - "ref/netcore50/zh-hans/System.Globalization.xml", - "ref/netcore50/zh-hant/System.Globalization.xml", - "ref/netstandard1.0/System.Globalization.dll", - "ref/netstandard1.0/System.Globalization.xml", - "ref/netstandard1.0/de/System.Globalization.xml", - "ref/netstandard1.0/es/System.Globalization.xml", - "ref/netstandard1.0/fr/System.Globalization.xml", - "ref/netstandard1.0/it/System.Globalization.xml", - "ref/netstandard1.0/ja/System.Globalization.xml", - "ref/netstandard1.0/ko/System.Globalization.xml", - "ref/netstandard1.0/ru/System.Globalization.xml", - "ref/netstandard1.0/zh-hans/System.Globalization.xml", - "ref/netstandard1.0/zh-hant/System.Globalization.xml", - "ref/netstandard1.3/System.Globalization.dll", - "ref/netstandard1.3/System.Globalization.xml", - "ref/netstandard1.3/de/System.Globalization.xml", - "ref/netstandard1.3/es/System.Globalization.xml", - "ref/netstandard1.3/fr/System.Globalization.xml", - "ref/netstandard1.3/it/System.Globalization.xml", - "ref/netstandard1.3/ja/System.Globalization.xml", - "ref/netstandard1.3/ko/System.Globalization.xml", - "ref/netstandard1.3/ru/System.Globalization.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.globalization.4.3.0.nupkg.sha512", - "system.globalization.nuspec" - ] - }, - "System.Globalization.Calendars/4.3.0": { - "sha512": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", - "type": "package", - "path": "system.globalization.calendars/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Calendars.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.xml", - "ref/netstandard1.3/de/System.Globalization.Calendars.xml", - "ref/netstandard1.3/es/System.Globalization.Calendars.xml", - "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", - "ref/netstandard1.3/it/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.globalization.calendars.4.3.0.nupkg.sha512", - "system.globalization.calendars.nuspec" - ] - }, - "System.Globalization.Extensions/4.3.0": { - "sha512": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", - "type": "package", - "path": "system.globalization.extensions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Extensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Extensions.dll", - "ref/netstandard1.3/System.Globalization.Extensions.dll", - "ref/netstandard1.3/System.Globalization.Extensions.xml", - "ref/netstandard1.3/de/System.Globalization.Extensions.xml", - "ref/netstandard1.3/es/System.Globalization.Extensions.xml", - "ref/netstandard1.3/fr/System.Globalization.Extensions.xml", - "ref/netstandard1.3/it/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ja/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ko/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ru/System.Globalization.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll", - "runtimes/win/lib/net46/System.Globalization.Extensions.dll", - "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll", - "system.globalization.extensions.4.3.0.nupkg.sha512", - "system.globalization.extensions.nuspec" - ] - }, - "System.IO/4.3.0": { - "sha512": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", - "type": "package", - "path": "system.io/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.IO.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.IO.dll", - "ref/netcore50/System.IO.dll", - "ref/netcore50/System.IO.xml", - "ref/netcore50/de/System.IO.xml", - "ref/netcore50/es/System.IO.xml", - "ref/netcore50/fr/System.IO.xml", - "ref/netcore50/it/System.IO.xml", - "ref/netcore50/ja/System.IO.xml", - "ref/netcore50/ko/System.IO.xml", - "ref/netcore50/ru/System.IO.xml", - "ref/netcore50/zh-hans/System.IO.xml", - "ref/netcore50/zh-hant/System.IO.xml", - "ref/netstandard1.0/System.IO.dll", - "ref/netstandard1.0/System.IO.xml", - "ref/netstandard1.0/de/System.IO.xml", - "ref/netstandard1.0/es/System.IO.xml", - "ref/netstandard1.0/fr/System.IO.xml", - "ref/netstandard1.0/it/System.IO.xml", - "ref/netstandard1.0/ja/System.IO.xml", - "ref/netstandard1.0/ko/System.IO.xml", - "ref/netstandard1.0/ru/System.IO.xml", - "ref/netstandard1.0/zh-hans/System.IO.xml", - "ref/netstandard1.0/zh-hant/System.IO.xml", - "ref/netstandard1.3/System.IO.dll", - "ref/netstandard1.3/System.IO.xml", - "ref/netstandard1.3/de/System.IO.xml", - "ref/netstandard1.3/es/System.IO.xml", - "ref/netstandard1.3/fr/System.IO.xml", - "ref/netstandard1.3/it/System.IO.xml", - "ref/netstandard1.3/ja/System.IO.xml", - "ref/netstandard1.3/ko/System.IO.xml", - "ref/netstandard1.3/ru/System.IO.xml", - "ref/netstandard1.3/zh-hans/System.IO.xml", - "ref/netstandard1.3/zh-hant/System.IO.xml", - "ref/netstandard1.5/System.IO.dll", - "ref/netstandard1.5/System.IO.xml", - "ref/netstandard1.5/de/System.IO.xml", - "ref/netstandard1.5/es/System.IO.xml", - "ref/netstandard1.5/fr/System.IO.xml", - "ref/netstandard1.5/it/System.IO.xml", - "ref/netstandard1.5/ja/System.IO.xml", - "ref/netstandard1.5/ko/System.IO.xml", - "ref/netstandard1.5/ru/System.IO.xml", - "ref/netstandard1.5/zh-hans/System.IO.xml", - "ref/netstandard1.5/zh-hant/System.IO.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.4.3.0.nupkg.sha512", - "system.io.nuspec" - ] - }, - "System.IO.Compression/4.3.0": { - "sha512": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", - "type": "package", - "path": "system.io.compression/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.IO.Compression.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.xml", - "ref/netcore50/de/System.IO.Compression.xml", - "ref/netcore50/es/System.IO.Compression.xml", - "ref/netcore50/fr/System.IO.Compression.xml", - "ref/netcore50/it/System.IO.Compression.xml", - "ref/netcore50/ja/System.IO.Compression.xml", - "ref/netcore50/ko/System.IO.Compression.xml", - "ref/netcore50/ru/System.IO.Compression.xml", - "ref/netcore50/zh-hans/System.IO.Compression.xml", - "ref/netcore50/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.1/System.IO.Compression.dll", - "ref/netstandard1.1/System.IO.Compression.xml", - "ref/netstandard1.1/de/System.IO.Compression.xml", - "ref/netstandard1.1/es/System.IO.Compression.xml", - "ref/netstandard1.1/fr/System.IO.Compression.xml", - "ref/netstandard1.1/it/System.IO.Compression.xml", - "ref/netstandard1.1/ja/System.IO.Compression.xml", - "ref/netstandard1.1/ko/System.IO.Compression.xml", - "ref/netstandard1.1/ru/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.3/System.IO.Compression.dll", - "ref/netstandard1.3/System.IO.Compression.xml", - "ref/netstandard1.3/de/System.IO.Compression.xml", - "ref/netstandard1.3/es/System.IO.Compression.xml", - "ref/netstandard1.3/fr/System.IO.Compression.xml", - "ref/netstandard1.3/it/System.IO.Compression.xml", - "ref/netstandard1.3/ja/System.IO.Compression.xml", - "ref/netstandard1.3/ko/System.IO.Compression.xml", - "ref/netstandard1.3/ru/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", - "runtimes/win/lib/net46/System.IO.Compression.dll", - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll", - "system.io.compression.4.3.0.nupkg.sha512", - "system.io.compression.nuspec" - ] - }, - "System.IO.Compression.ZipFile/4.3.0": { - "sha512": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==", - "type": "package", - "path": "system.io.compression.zipfile/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.Compression.ZipFile.dll", - "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.compression.zipfile.4.3.0.nupkg.sha512", - "system.io.compression.zipfile.nuspec" - ] - }, - "System.IO.FileSystem/4.3.0": { - "sha512": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", - "type": "package", - "path": "system.io.filesystem/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.filesystem.4.3.0.nupkg.sha512", - "system.io.filesystem.nuspec" - ] - }, - "System.IO.FileSystem.Primitives/4.3.0": { - "sha512": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", - "type": "package", - "path": "system.io.filesystem.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.Primitives.dll", - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.filesystem.primitives.4.3.0.nupkg.sha512", - "system.io.filesystem.primitives.nuspec" - ] - }, - "System.Linq/4.3.0": { - "sha512": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", - "type": "package", - "path": "system.linq/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.dll", - "lib/netcore50/System.Linq.dll", - "lib/netstandard1.6/System.Linq.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.dll", - "ref/netcore50/System.Linq.dll", - "ref/netcore50/System.Linq.xml", - "ref/netcore50/de/System.Linq.xml", - "ref/netcore50/es/System.Linq.xml", - "ref/netcore50/fr/System.Linq.xml", - "ref/netcore50/it/System.Linq.xml", - "ref/netcore50/ja/System.Linq.xml", - "ref/netcore50/ko/System.Linq.xml", - "ref/netcore50/ru/System.Linq.xml", - "ref/netcore50/zh-hans/System.Linq.xml", - "ref/netcore50/zh-hant/System.Linq.xml", - "ref/netstandard1.0/System.Linq.dll", - "ref/netstandard1.0/System.Linq.xml", - "ref/netstandard1.0/de/System.Linq.xml", - "ref/netstandard1.0/es/System.Linq.xml", - "ref/netstandard1.0/fr/System.Linq.xml", - "ref/netstandard1.0/it/System.Linq.xml", - "ref/netstandard1.0/ja/System.Linq.xml", - "ref/netstandard1.0/ko/System.Linq.xml", - "ref/netstandard1.0/ru/System.Linq.xml", - "ref/netstandard1.0/zh-hans/System.Linq.xml", - "ref/netstandard1.0/zh-hant/System.Linq.xml", - "ref/netstandard1.6/System.Linq.dll", - "ref/netstandard1.6/System.Linq.xml", - "ref/netstandard1.6/de/System.Linq.xml", - "ref/netstandard1.6/es/System.Linq.xml", - "ref/netstandard1.6/fr/System.Linq.xml", - "ref/netstandard1.6/it/System.Linq.xml", - "ref/netstandard1.6/ja/System.Linq.xml", - "ref/netstandard1.6/ko/System.Linq.xml", - "ref/netstandard1.6/ru/System.Linq.xml", - "ref/netstandard1.6/zh-hans/System.Linq.xml", - "ref/netstandard1.6/zh-hant/System.Linq.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.linq.4.3.0.nupkg.sha512", - "system.linq.nuspec" - ] - }, - "System.Linq.Expressions/4.3.0": { - "sha512": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==", - "type": "package", - "path": "system.linq.expressions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.Expressions.dll", - "lib/netcore50/System.Linq.Expressions.dll", - "lib/netstandard1.6/System.Linq.Expressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.xml", - "ref/netcore50/de/System.Linq.Expressions.xml", - "ref/netcore50/es/System.Linq.Expressions.xml", - "ref/netcore50/fr/System.Linq.Expressions.xml", - "ref/netcore50/it/System.Linq.Expressions.xml", - "ref/netcore50/ja/System.Linq.Expressions.xml", - "ref/netcore50/ko/System.Linq.Expressions.xml", - "ref/netcore50/ru/System.Linq.Expressions.xml", - "ref/netcore50/zh-hans/System.Linq.Expressions.xml", - "ref/netcore50/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.0/System.Linq.Expressions.dll", - "ref/netstandard1.0/System.Linq.Expressions.xml", - "ref/netstandard1.0/de/System.Linq.Expressions.xml", - "ref/netstandard1.0/es/System.Linq.Expressions.xml", - "ref/netstandard1.0/fr/System.Linq.Expressions.xml", - "ref/netstandard1.0/it/System.Linq.Expressions.xml", - "ref/netstandard1.0/ja/System.Linq.Expressions.xml", - "ref/netstandard1.0/ko/System.Linq.Expressions.xml", - "ref/netstandard1.0/ru/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.3/System.Linq.Expressions.dll", - "ref/netstandard1.3/System.Linq.Expressions.xml", - "ref/netstandard1.3/de/System.Linq.Expressions.xml", - "ref/netstandard1.3/es/System.Linq.Expressions.xml", - "ref/netstandard1.3/fr/System.Linq.Expressions.xml", - "ref/netstandard1.3/it/System.Linq.Expressions.xml", - "ref/netstandard1.3/ja/System.Linq.Expressions.xml", - "ref/netstandard1.3/ko/System.Linq.Expressions.xml", - "ref/netstandard1.3/ru/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.6/System.Linq.Expressions.dll", - "ref/netstandard1.6/System.Linq.Expressions.xml", - "ref/netstandard1.6/de/System.Linq.Expressions.xml", - "ref/netstandard1.6/es/System.Linq.Expressions.xml", - "ref/netstandard1.6/fr/System.Linq.Expressions.xml", - "ref/netstandard1.6/it/System.Linq.Expressions.xml", - "ref/netstandard1.6/ja/System.Linq.Expressions.xml", - "ref/netstandard1.6/ko/System.Linq.Expressions.xml", - "ref/netstandard1.6/ru/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll", - "system.linq.expressions.4.3.0.nupkg.sha512", - "system.linq.expressions.nuspec" - ] - }, - "System.Net.Http/4.3.0": { - "sha512": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", - "type": "package", - "path": "system.net.http/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/Xamarinmac20/_._", - "lib/monoandroid10/_._", - "lib/monotouch10/_._", - "lib/net45/_._", - "lib/net46/System.Net.Http.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/Xamarinmac20/_._", - "ref/monoandroid10/_._", - "ref/monotouch10/_._", - "ref/net45/_._", - "ref/net46/System.Net.Http.dll", - "ref/net46/System.Net.Http.xml", - "ref/net46/de/System.Net.Http.xml", - "ref/net46/es/System.Net.Http.xml", - "ref/net46/fr/System.Net.Http.xml", - "ref/net46/it/System.Net.Http.xml", - "ref/net46/ja/System.Net.Http.xml", - "ref/net46/ko/System.Net.Http.xml", - "ref/net46/ru/System.Net.Http.xml", - "ref/net46/zh-hans/System.Net.Http.xml", - "ref/net46/zh-hant/System.Net.Http.xml", - "ref/netcore50/System.Net.Http.dll", - "ref/netcore50/System.Net.Http.xml", - "ref/netcore50/de/System.Net.Http.xml", - "ref/netcore50/es/System.Net.Http.xml", - "ref/netcore50/fr/System.Net.Http.xml", - "ref/netcore50/it/System.Net.Http.xml", - "ref/netcore50/ja/System.Net.Http.xml", - "ref/netcore50/ko/System.Net.Http.xml", - "ref/netcore50/ru/System.Net.Http.xml", - "ref/netcore50/zh-hans/System.Net.Http.xml", - "ref/netcore50/zh-hant/System.Net.Http.xml", - "ref/netstandard1.1/System.Net.Http.dll", - "ref/netstandard1.1/System.Net.Http.xml", - "ref/netstandard1.1/de/System.Net.Http.xml", - "ref/netstandard1.1/es/System.Net.Http.xml", - "ref/netstandard1.1/fr/System.Net.Http.xml", - "ref/netstandard1.1/it/System.Net.Http.xml", - "ref/netstandard1.1/ja/System.Net.Http.xml", - "ref/netstandard1.1/ko/System.Net.Http.xml", - "ref/netstandard1.1/ru/System.Net.Http.xml", - "ref/netstandard1.1/zh-hans/System.Net.Http.xml", - "ref/netstandard1.1/zh-hant/System.Net.Http.xml", - "ref/netstandard1.3/System.Net.Http.dll", - "ref/netstandard1.3/System.Net.Http.xml", - "ref/netstandard1.3/de/System.Net.Http.xml", - "ref/netstandard1.3/es/System.Net.Http.xml", - "ref/netstandard1.3/fr/System.Net.Http.xml", - "ref/netstandard1.3/it/System.Net.Http.xml", - "ref/netstandard1.3/ja/System.Net.Http.xml", - "ref/netstandard1.3/ko/System.Net.Http.xml", - "ref/netstandard1.3/ru/System.Net.Http.xml", - "ref/netstandard1.3/zh-hans/System.Net.Http.xml", - "ref/netstandard1.3/zh-hant/System.Net.Http.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", - "runtimes/win/lib/net46/System.Net.Http.dll", - "runtimes/win/lib/netcore50/System.Net.Http.dll", - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll", - "system.net.http.4.3.0.nupkg.sha512", - "system.net.http.nuspec" - ] - }, - "System.Net.Primitives/4.3.0": { - "sha512": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", - "type": "package", - "path": "system.net.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Net.Primitives.dll", - "ref/netcore50/System.Net.Primitives.xml", - "ref/netcore50/de/System.Net.Primitives.xml", - "ref/netcore50/es/System.Net.Primitives.xml", - "ref/netcore50/fr/System.Net.Primitives.xml", - "ref/netcore50/it/System.Net.Primitives.xml", - "ref/netcore50/ja/System.Net.Primitives.xml", - "ref/netcore50/ko/System.Net.Primitives.xml", - "ref/netcore50/ru/System.Net.Primitives.xml", - "ref/netcore50/zh-hans/System.Net.Primitives.xml", - "ref/netcore50/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.0/System.Net.Primitives.dll", - "ref/netstandard1.0/System.Net.Primitives.xml", - "ref/netstandard1.0/de/System.Net.Primitives.xml", - "ref/netstandard1.0/es/System.Net.Primitives.xml", - "ref/netstandard1.0/fr/System.Net.Primitives.xml", - "ref/netstandard1.0/it/System.Net.Primitives.xml", - "ref/netstandard1.0/ja/System.Net.Primitives.xml", - "ref/netstandard1.0/ko/System.Net.Primitives.xml", - "ref/netstandard1.0/ru/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.1/System.Net.Primitives.dll", - "ref/netstandard1.1/System.Net.Primitives.xml", - "ref/netstandard1.1/de/System.Net.Primitives.xml", - "ref/netstandard1.1/es/System.Net.Primitives.xml", - "ref/netstandard1.1/fr/System.Net.Primitives.xml", - "ref/netstandard1.1/it/System.Net.Primitives.xml", - "ref/netstandard1.1/ja/System.Net.Primitives.xml", - "ref/netstandard1.1/ko/System.Net.Primitives.xml", - "ref/netstandard1.1/ru/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.3/System.Net.Primitives.dll", - "ref/netstandard1.3/System.Net.Primitives.xml", - "ref/netstandard1.3/de/System.Net.Primitives.xml", - "ref/netstandard1.3/es/System.Net.Primitives.xml", - "ref/netstandard1.3/fr/System.Net.Primitives.xml", - "ref/netstandard1.3/it/System.Net.Primitives.xml", - "ref/netstandard1.3/ja/System.Net.Primitives.xml", - "ref/netstandard1.3/ko/System.Net.Primitives.xml", - "ref/netstandard1.3/ru/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.net.primitives.4.3.0.nupkg.sha512", - "system.net.primitives.nuspec" - ] - }, - "System.Net.Sockets/4.3.0": { - "sha512": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==", - "type": "package", - "path": "system.net.sockets/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.Sockets.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.xml", - "ref/netstandard1.3/de/System.Net.Sockets.xml", - "ref/netstandard1.3/es/System.Net.Sockets.xml", - "ref/netstandard1.3/fr/System.Net.Sockets.xml", - "ref/netstandard1.3/it/System.Net.Sockets.xml", - "ref/netstandard1.3/ja/System.Net.Sockets.xml", - "ref/netstandard1.3/ko/System.Net.Sockets.xml", - "ref/netstandard1.3/ru/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.net.sockets.4.3.0.nupkg.sha512", - "system.net.sockets.nuspec" - ] - }, - "System.ObjectModel/4.3.0": { - "sha512": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", - "type": "package", - "path": "system.objectmodel/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ObjectModel.dll", - "lib/netstandard1.3/System.ObjectModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ObjectModel.dll", - "ref/netcore50/System.ObjectModel.xml", - "ref/netcore50/de/System.ObjectModel.xml", - "ref/netcore50/es/System.ObjectModel.xml", - "ref/netcore50/fr/System.ObjectModel.xml", - "ref/netcore50/it/System.ObjectModel.xml", - "ref/netcore50/ja/System.ObjectModel.xml", - "ref/netcore50/ko/System.ObjectModel.xml", - "ref/netcore50/ru/System.ObjectModel.xml", - "ref/netcore50/zh-hans/System.ObjectModel.xml", - "ref/netcore50/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.0/System.ObjectModel.dll", - "ref/netstandard1.0/System.ObjectModel.xml", - "ref/netstandard1.0/de/System.ObjectModel.xml", - "ref/netstandard1.0/es/System.ObjectModel.xml", - "ref/netstandard1.0/fr/System.ObjectModel.xml", - "ref/netstandard1.0/it/System.ObjectModel.xml", - "ref/netstandard1.0/ja/System.ObjectModel.xml", - "ref/netstandard1.0/ko/System.ObjectModel.xml", - "ref/netstandard1.0/ru/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.3/System.ObjectModel.dll", - "ref/netstandard1.3/System.ObjectModel.xml", - "ref/netstandard1.3/de/System.ObjectModel.xml", - "ref/netstandard1.3/es/System.ObjectModel.xml", - "ref/netstandard1.3/fr/System.ObjectModel.xml", - "ref/netstandard1.3/it/System.ObjectModel.xml", - "ref/netstandard1.3/ja/System.ObjectModel.xml", - "ref/netstandard1.3/ko/System.ObjectModel.xml", - "ref/netstandard1.3/ru/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.objectmodel.4.3.0.nupkg.sha512", - "system.objectmodel.nuspec" - ] - }, - "System.Private.DataContractSerialization/4.1.1": { - "sha512": "lcqFBUaCZxPiUkA4dlSOoPZGtZsAuuElH2XHgLwGLxd7ZozWetV5yiz0qGAV2AUYOqw97MtZBjbLMN16Xz4vXA==", - "type": "package", - "path": "system.private.datacontractserialization/4.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.3/System.Private.DataContractSerialization.dll", - "ref/netstandard/_._", - "runtimes/aot/lib/netcore50/System.Private.DataContractSerialization.dll", - "system.private.datacontractserialization.4.1.1.nupkg.sha512", - "system.private.datacontractserialization.nuspec" - ] - }, - "System.Reflection/4.3.0": { - "sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", - "type": "package", - "path": "system.reflection/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Reflection.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Reflection.dll", - "ref/netcore50/System.Reflection.dll", - "ref/netcore50/System.Reflection.xml", - "ref/netcore50/de/System.Reflection.xml", - "ref/netcore50/es/System.Reflection.xml", - "ref/netcore50/fr/System.Reflection.xml", - "ref/netcore50/it/System.Reflection.xml", - "ref/netcore50/ja/System.Reflection.xml", - "ref/netcore50/ko/System.Reflection.xml", - "ref/netcore50/ru/System.Reflection.xml", - "ref/netcore50/zh-hans/System.Reflection.xml", - "ref/netcore50/zh-hant/System.Reflection.xml", - "ref/netstandard1.0/System.Reflection.dll", - "ref/netstandard1.0/System.Reflection.xml", - "ref/netstandard1.0/de/System.Reflection.xml", - "ref/netstandard1.0/es/System.Reflection.xml", - "ref/netstandard1.0/fr/System.Reflection.xml", - "ref/netstandard1.0/it/System.Reflection.xml", - "ref/netstandard1.0/ja/System.Reflection.xml", - "ref/netstandard1.0/ko/System.Reflection.xml", - "ref/netstandard1.0/ru/System.Reflection.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.xml", - "ref/netstandard1.3/System.Reflection.dll", - "ref/netstandard1.3/System.Reflection.xml", - "ref/netstandard1.3/de/System.Reflection.xml", - "ref/netstandard1.3/es/System.Reflection.xml", - "ref/netstandard1.3/fr/System.Reflection.xml", - "ref/netstandard1.3/it/System.Reflection.xml", - "ref/netstandard1.3/ja/System.Reflection.xml", - "ref/netstandard1.3/ko/System.Reflection.xml", - "ref/netstandard1.3/ru/System.Reflection.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.xml", - "ref/netstandard1.5/System.Reflection.dll", - "ref/netstandard1.5/System.Reflection.xml", - "ref/netstandard1.5/de/System.Reflection.xml", - "ref/netstandard1.5/es/System.Reflection.xml", - "ref/netstandard1.5/fr/System.Reflection.xml", - "ref/netstandard1.5/it/System.Reflection.xml", - "ref/netstandard1.5/ja/System.Reflection.xml", - "ref/netstandard1.5/ko/System.Reflection.xml", - "ref/netstandard1.5/ru/System.Reflection.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.4.3.0.nupkg.sha512", - "system.reflection.nuspec" - ] - }, - "System.Reflection.Emit/4.3.0": { - "sha512": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==", - "type": "package", - "path": "system.reflection.emit/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/monotouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.dll", - "lib/netstandard1.3/System.Reflection.Emit.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/net45/_._", - "ref/netstandard1.1/System.Reflection.Emit.dll", - "ref/netstandard1.1/System.Reflection.Emit.xml", - "ref/netstandard1.1/de/System.Reflection.Emit.xml", - "ref/netstandard1.1/es/System.Reflection.Emit.xml", - "ref/netstandard1.1/fr/System.Reflection.Emit.xml", - "ref/netstandard1.1/it/System.Reflection.Emit.xml", - "ref/netstandard1.1/ja/System.Reflection.Emit.xml", - "ref/netstandard1.1/ko/System.Reflection.Emit.xml", - "ref/netstandard1.1/ru/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", - "ref/xamarinmac20/_._", - "system.reflection.emit.4.3.0.nupkg.sha512", - "system.reflection.emit.nuspec" - ] - }, - "System.Reflection.Emit.ILGeneration/4.3.0": { - "sha512": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", - "type": "package", - "path": "system.reflection.emit.ilgeneration/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/_._", - "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512", - "system.reflection.emit.ilgeneration.nuspec" - ] - }, - "System.Reflection.Emit.Lightweight/4.3.0": { - "sha512": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==", - "type": "package", - "path": "system.reflection.emit.lightweight/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.Lightweight.dll", - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/_._", - "system.reflection.emit.lightweight.4.3.0.nupkg.sha512", - "system.reflection.emit.lightweight.nuspec" - ] - }, - "System.Reflection.Extensions/4.3.0": { - "sha512": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", - "type": "package", - "path": "system.reflection.extensions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Extensions.dll", - "ref/netcore50/System.Reflection.Extensions.xml", - "ref/netcore50/de/System.Reflection.Extensions.xml", - "ref/netcore50/es/System.Reflection.Extensions.xml", - "ref/netcore50/fr/System.Reflection.Extensions.xml", - "ref/netcore50/it/System.Reflection.Extensions.xml", - "ref/netcore50/ja/System.Reflection.Extensions.xml", - "ref/netcore50/ko/System.Reflection.Extensions.xml", - "ref/netcore50/ru/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", - "ref/netstandard1.0/System.Reflection.Extensions.dll", - "ref/netstandard1.0/System.Reflection.Extensions.xml", - "ref/netstandard1.0/de/System.Reflection.Extensions.xml", - "ref/netstandard1.0/es/System.Reflection.Extensions.xml", - "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", - "ref/netstandard1.0/it/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.extensions.4.3.0.nupkg.sha512", - "system.reflection.extensions.nuspec" - ] - }, - "System.Reflection.Metadata/1.6.0": { - "sha512": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==", - "type": "package", - "path": "system.reflection.metadata/1.6.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netstandard1.1/System.Reflection.Metadata.dll", - "lib/netstandard1.1/System.Reflection.Metadata.xml", - "lib/netstandard2.0/System.Reflection.Metadata.dll", - "lib/netstandard2.0/System.Reflection.Metadata.xml", - "lib/portable-net45+win8/System.Reflection.Metadata.dll", - "lib/portable-net45+win8/System.Reflection.Metadata.xml", - "system.reflection.metadata.1.6.0.nupkg.sha512", - "system.reflection.metadata.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Reflection.Primitives/4.3.0": { - "sha512": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", - "type": "package", - "path": "system.reflection.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Primitives.dll", - "ref/netcore50/System.Reflection.Primitives.xml", - "ref/netcore50/de/System.Reflection.Primitives.xml", - "ref/netcore50/es/System.Reflection.Primitives.xml", - "ref/netcore50/fr/System.Reflection.Primitives.xml", - "ref/netcore50/it/System.Reflection.Primitives.xml", - "ref/netcore50/ja/System.Reflection.Primitives.xml", - "ref/netcore50/ko/System.Reflection.Primitives.xml", - "ref/netcore50/ru/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", - "ref/netstandard1.0/System.Reflection.Primitives.dll", - "ref/netstandard1.0/System.Reflection.Primitives.xml", - "ref/netstandard1.0/de/System.Reflection.Primitives.xml", - "ref/netstandard1.0/es/System.Reflection.Primitives.xml", - "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", - "ref/netstandard1.0/it/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.primitives.4.3.0.nupkg.sha512", - "system.reflection.primitives.nuspec" - ] - }, - "System.Reflection.TypeExtensions/4.3.0": { - "sha512": "7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", - "type": "package", - "path": "system.reflection.typeextensions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Reflection.TypeExtensions.dll", - "lib/net462/System.Reflection.TypeExtensions.dll", - "lib/netcore50/System.Reflection.TypeExtensions.dll", - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Reflection.TypeExtensions.dll", - "ref/net462/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll", - "system.reflection.typeextensions.4.3.0.nupkg.sha512", - "system.reflection.typeextensions.nuspec" - ] - }, - "System.Resources.ResourceManager/4.3.0": { - "sha512": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", - "type": "package", - "path": "system.resources.resourcemanager/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Resources.ResourceManager.dll", - "ref/netcore50/System.Resources.ResourceManager.xml", - "ref/netcore50/de/System.Resources.ResourceManager.xml", - "ref/netcore50/es/System.Resources.ResourceManager.xml", - "ref/netcore50/fr/System.Resources.ResourceManager.xml", - "ref/netcore50/it/System.Resources.ResourceManager.xml", - "ref/netcore50/ja/System.Resources.ResourceManager.xml", - "ref/netcore50/ko/System.Resources.ResourceManager.xml", - "ref/netcore50/ru/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/System.Resources.ResourceManager.dll", - "ref/netstandard1.0/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.resources.resourcemanager.4.3.0.nupkg.sha512", - "system.resources.resourcemanager.nuspec" - ] - }, - "System.Runtime/4.3.0": { - "sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", - "type": "package", - "path": "system.runtime/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.dll", - "lib/portable-net45+win8+wp80+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.dll", - "ref/netcore50/System.Runtime.dll", - "ref/netcore50/System.Runtime.xml", - "ref/netcore50/de/System.Runtime.xml", - "ref/netcore50/es/System.Runtime.xml", - "ref/netcore50/fr/System.Runtime.xml", - "ref/netcore50/it/System.Runtime.xml", - "ref/netcore50/ja/System.Runtime.xml", - "ref/netcore50/ko/System.Runtime.xml", - "ref/netcore50/ru/System.Runtime.xml", - "ref/netcore50/zh-hans/System.Runtime.xml", - "ref/netcore50/zh-hant/System.Runtime.xml", - "ref/netstandard1.0/System.Runtime.dll", - "ref/netstandard1.0/System.Runtime.xml", - "ref/netstandard1.0/de/System.Runtime.xml", - "ref/netstandard1.0/es/System.Runtime.xml", - "ref/netstandard1.0/fr/System.Runtime.xml", - "ref/netstandard1.0/it/System.Runtime.xml", - "ref/netstandard1.0/ja/System.Runtime.xml", - "ref/netstandard1.0/ko/System.Runtime.xml", - "ref/netstandard1.0/ru/System.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.xml", - "ref/netstandard1.2/System.Runtime.dll", - "ref/netstandard1.2/System.Runtime.xml", - "ref/netstandard1.2/de/System.Runtime.xml", - "ref/netstandard1.2/es/System.Runtime.xml", - "ref/netstandard1.2/fr/System.Runtime.xml", - "ref/netstandard1.2/it/System.Runtime.xml", - "ref/netstandard1.2/ja/System.Runtime.xml", - "ref/netstandard1.2/ko/System.Runtime.xml", - "ref/netstandard1.2/ru/System.Runtime.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.xml", - "ref/netstandard1.3/System.Runtime.dll", - "ref/netstandard1.3/System.Runtime.xml", - "ref/netstandard1.3/de/System.Runtime.xml", - "ref/netstandard1.3/es/System.Runtime.xml", - "ref/netstandard1.3/fr/System.Runtime.xml", - "ref/netstandard1.3/it/System.Runtime.xml", - "ref/netstandard1.3/ja/System.Runtime.xml", - "ref/netstandard1.3/ko/System.Runtime.xml", - "ref/netstandard1.3/ru/System.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.xml", - "ref/netstandard1.5/System.Runtime.dll", - "ref/netstandard1.5/System.Runtime.xml", - "ref/netstandard1.5/de/System.Runtime.xml", - "ref/netstandard1.5/es/System.Runtime.xml", - "ref/netstandard1.5/fr/System.Runtime.xml", - "ref/netstandard1.5/it/System.Runtime.xml", - "ref/netstandard1.5/ja/System.Runtime.xml", - "ref/netstandard1.5/ko/System.Runtime.xml", - "ref/netstandard1.5/ru/System.Runtime.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.xml", - "ref/portable-net45+win8+wp80+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.4.3.0.nupkg.sha512", - "system.runtime.nuspec" - ] - }, - "System.Runtime.CompilerServices.Unsafe/4.5.2": { - "sha512": "wprSFgext8cwqymChhrBLu62LMg/1u92bU+VOwyfBimSPVFXtsNqEWC92Pf9ofzJFlk4IHmJA75EDJn1b2goAQ==", - "type": "package", - "path": "system.runtime.compilerservices.unsafe/4.5.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.xml", - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml", - "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", - "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", - "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml", - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", - "system.runtime.compilerservices.unsafe.4.5.2.nupkg.sha512", - "system.runtime.compilerservices.unsafe.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Runtime.Extensions/4.3.0": { - "sha512": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", - "type": "package", - "path": "system.runtime.extensions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.xml", - "ref/netcore50/de/System.Runtime.Extensions.xml", - "ref/netcore50/es/System.Runtime.Extensions.xml", - "ref/netcore50/fr/System.Runtime.Extensions.xml", - "ref/netcore50/it/System.Runtime.Extensions.xml", - "ref/netcore50/ja/System.Runtime.Extensions.xml", - "ref/netcore50/ko/System.Runtime.Extensions.xml", - "ref/netcore50/ru/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.0/System.Runtime.Extensions.dll", - "ref/netstandard1.0/System.Runtime.Extensions.xml", - "ref/netstandard1.0/de/System.Runtime.Extensions.xml", - "ref/netstandard1.0/es/System.Runtime.Extensions.xml", - "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.0/it/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.3/System.Runtime.Extensions.dll", - "ref/netstandard1.3/System.Runtime.Extensions.xml", - "ref/netstandard1.3/de/System.Runtime.Extensions.xml", - "ref/netstandard1.3/es/System.Runtime.Extensions.xml", - "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.3/it/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.5/System.Runtime.Extensions.dll", - "ref/netstandard1.5/System.Runtime.Extensions.xml", - "ref/netstandard1.5/de/System.Runtime.Extensions.xml", - "ref/netstandard1.5/es/System.Runtime.Extensions.xml", - "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.5/it/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.extensions.4.3.0.nupkg.sha512", - "system.runtime.extensions.nuspec" - ] - }, - "System.Runtime.Handles/4.3.0": { - "sha512": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", - "type": "package", - "path": "system.runtime.handles/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/netstandard1.3/System.Runtime.Handles.dll", - "ref/netstandard1.3/System.Runtime.Handles.xml", - "ref/netstandard1.3/de/System.Runtime.Handles.xml", - "ref/netstandard1.3/es/System.Runtime.Handles.xml", - "ref/netstandard1.3/fr/System.Runtime.Handles.xml", - "ref/netstandard1.3/it/System.Runtime.Handles.xml", - "ref/netstandard1.3/ja/System.Runtime.Handles.xml", - "ref/netstandard1.3/ko/System.Runtime.Handles.xml", - "ref/netstandard1.3/ru/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.handles.4.3.0.nupkg.sha512", - "system.runtime.handles.nuspec" - ] - }, - "System.Runtime.InteropServices/4.3.0": { - "sha512": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", - "type": "package", - "path": "system.runtime.interopservices/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.InteropServices.dll", - "lib/net463/System.Runtime.InteropServices.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.InteropServices.dll", - "ref/net463/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.xml", - "ref/netcore50/de/System.Runtime.InteropServices.xml", - "ref/netcore50/es/System.Runtime.InteropServices.xml", - "ref/netcore50/fr/System.Runtime.InteropServices.xml", - "ref/netcore50/it/System.Runtime.InteropServices.xml", - "ref/netcore50/ja/System.Runtime.InteropServices.xml", - "ref/netcore50/ko/System.Runtime.InteropServices.xml", - "ref/netcore50/ru/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", - "ref/netcoreapp1.1/System.Runtime.InteropServices.dll", - "ref/netstandard1.1/System.Runtime.InteropServices.dll", - "ref/netstandard1.1/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/System.Runtime.InteropServices.dll", - "ref/netstandard1.2/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/System.Runtime.InteropServices.dll", - "ref/netstandard1.3/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/System.Runtime.InteropServices.dll", - "ref/netstandard1.5/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.interopservices.4.3.0.nupkg.sha512", - "system.runtime.interopservices.nuspec" - ] - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "sha512": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", - "type": "package", - "path": "system.runtime.interopservices.runtimeinformation/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", - "system.runtime.interopservices.runtimeinformation.nuspec" - ] - }, - "System.Runtime.Loader/4.0.0": { - "sha512": "4UN78GOVU/mbDFcXkEWtetJT/sJ0yic2gGk1HSlSpWI0TDf421xnrZTDZnwNBapk1GQeYN7U1lTj/aQB1by6ow==", - "type": "package", - "path": "system.runtime.loader/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net462/_._", - "lib/netstandard1.5/System.Runtime.Loader.dll", - "ref/netstandard1.5/System.Runtime.Loader.dll", - "ref/netstandard1.5/System.Runtime.Loader.xml", - "ref/netstandard1.5/de/System.Runtime.Loader.xml", - "ref/netstandard1.5/es/System.Runtime.Loader.xml", - "ref/netstandard1.5/fr/System.Runtime.Loader.xml", - "ref/netstandard1.5/it/System.Runtime.Loader.xml", - "ref/netstandard1.5/ja/System.Runtime.Loader.xml", - "ref/netstandard1.5/ko/System.Runtime.Loader.xml", - "ref/netstandard1.5/ru/System.Runtime.Loader.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.Loader.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.Loader.xml", - "system.runtime.loader.4.0.0.nupkg.sha512", - "system.runtime.loader.nuspec" - ] - }, - "System.Runtime.Numerics/4.3.0": { - "sha512": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", - "type": "package", - "path": "system.runtime.numerics/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Runtime.Numerics.dll", - "lib/netstandard1.3/System.Runtime.Numerics.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Runtime.Numerics.dll", - "ref/netcore50/System.Runtime.Numerics.xml", - "ref/netcore50/de/System.Runtime.Numerics.xml", - "ref/netcore50/es/System.Runtime.Numerics.xml", - "ref/netcore50/fr/System.Runtime.Numerics.xml", - "ref/netcore50/it/System.Runtime.Numerics.xml", - "ref/netcore50/ja/System.Runtime.Numerics.xml", - "ref/netcore50/ko/System.Runtime.Numerics.xml", - "ref/netcore50/ru/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", - "ref/netstandard1.1/System.Runtime.Numerics.dll", - "ref/netstandard1.1/System.Runtime.Numerics.xml", - "ref/netstandard1.1/de/System.Runtime.Numerics.xml", - "ref/netstandard1.1/es/System.Runtime.Numerics.xml", - "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", - "ref/netstandard1.1/it/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.numerics.4.3.0.nupkg.sha512", - "system.runtime.numerics.nuspec" - ] - }, - "System.Runtime.Serialization.Json/4.0.2": { - "sha512": "+7DIJhnKYgCzUgcLbVTtRQb2l1M0FP549XFlFkQM5lmNiUBl44AfNbx4bz61xA8PzLtlYwfmif4JJJW7MPPnjg==", - "type": "package", - "path": "system.runtime.serialization.json/4.0.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Runtime.Serialization.Json.dll", - "lib/netstandard1.3/System.Runtime.Serialization.Json.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Runtime.Serialization.Json.dll", - "ref/netcore50/System.Runtime.Serialization.Json.xml", - "ref/netcore50/de/System.Runtime.Serialization.Json.xml", - "ref/netcore50/es/System.Runtime.Serialization.Json.xml", - "ref/netcore50/fr/System.Runtime.Serialization.Json.xml", - "ref/netcore50/it/System.Runtime.Serialization.Json.xml", - "ref/netcore50/ja/System.Runtime.Serialization.Json.xml", - "ref/netcore50/ko/System.Runtime.Serialization.Json.xml", - "ref/netcore50/ru/System.Runtime.Serialization.Json.xml", - "ref/netcore50/zh-hans/System.Runtime.Serialization.Json.xml", - "ref/netcore50/zh-hant/System.Runtime.Serialization.Json.xml", - "ref/netstandard1.0/System.Runtime.Serialization.Json.dll", - "ref/netstandard1.0/System.Runtime.Serialization.Json.xml", - "ref/netstandard1.0/de/System.Runtime.Serialization.Json.xml", - "ref/netstandard1.0/es/System.Runtime.Serialization.Json.xml", - "ref/netstandard1.0/fr/System.Runtime.Serialization.Json.xml", - "ref/netstandard1.0/it/System.Runtime.Serialization.Json.xml", - "ref/netstandard1.0/ja/System.Runtime.Serialization.Json.xml", - "ref/netstandard1.0/ko/System.Runtime.Serialization.Json.xml", - "ref/netstandard1.0/ru/System.Runtime.Serialization.Json.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Json.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Json.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.serialization.json.4.0.2.nupkg.sha512", - "system.runtime.serialization.json.nuspec" - ] - }, - "System.Runtime.Serialization.Primitives/4.1.1": { - "sha512": "HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==", - "type": "package", - "path": "system.runtime.serialization.primitives/4.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.Runtime.Serialization.Primitives.dll", - "lib/netcore50/System.Runtime.Serialization.Primitives.dll", - "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.Runtime.Serialization.Primitives.dll", - "ref/netcore50/System.Runtime.Serialization.Primitives.dll", - "ref/netcore50/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/de/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/es/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/fr/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/it/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/ja/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/ko/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/ru/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/zh-hans/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/zh-hant/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/System.Runtime.Serialization.Primitives.dll", - "ref/netstandard1.0/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/de/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/es/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/fr/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/it/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/ja/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/ko/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/ru/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll", - "ref/netstandard1.3/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/de/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/es/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/fr/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/it/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/ja/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/ko/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/ru/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Serialization.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll", - "system.runtime.serialization.primitives.4.1.1.nupkg.sha512", - "system.runtime.serialization.primitives.nuspec" - ] - }, - "System.Security.Cryptography.Algorithms/4.3.0": { - "sha512": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", - "type": "package", - "path": "system.security.cryptography.algorithms/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Algorithms.dll", - "lib/net461/System.Security.Cryptography.Algorithms.dll", - "lib/net463/System.Security.Cryptography.Algorithms.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Algorithms.dll", - "ref/net461/System.Security.Cryptography.Algorithms.dll", - "ref/net463/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "system.security.cryptography.algorithms.4.3.0.nupkg.sha512", - "system.security.cryptography.algorithms.nuspec" - ] - }, - "System.Security.Cryptography.Cng/4.3.0": { - "sha512": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", - "type": "package", - "path": "system.security.cryptography.cng/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Security.Cryptography.Cng.dll", - "lib/net461/System.Security.Cryptography.Cng.dll", - "lib/net463/System.Security.Cryptography.Cng.dll", - "ref/net46/System.Security.Cryptography.Cng.dll", - "ref/net461/System.Security.Cryptography.Cng.dll", - "ref/net463/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", - "system.security.cryptography.cng.4.3.0.nupkg.sha512", - "system.security.cryptography.cng.nuspec" - ] - }, - "System.Security.Cryptography.Csp/4.3.0": { - "sha512": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", - "type": "package", - "path": "system.security.cryptography.csp/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Csp.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Csp.dll", - "ref/netstandard1.3/System.Security.Cryptography.Csp.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/netcore50/_._", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", - "system.security.cryptography.csp.4.3.0.nupkg.sha512", - "system.security.cryptography.csp.nuspec" - ] - }, - "System.Security.Cryptography.Encoding/4.3.0": { - "sha512": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", - "type": "package", - "path": "system.security.cryptography.encoding/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Encoding.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "system.security.cryptography.encoding.4.3.0.nupkg.sha512", - "system.security.cryptography.encoding.nuspec" - ] - }, - "System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", - "type": "package", - "path": "system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "ref/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "system.security.cryptography.openssl.nuspec" - ] - }, - "System.Security.Cryptography.Primitives/4.3.0": { - "sha512": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", - "type": "package", - "path": "system.security.cryptography.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Primitives.dll", - "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Primitives.dll", - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.security.cryptography.primitives.4.3.0.nupkg.sha512", - "system.security.cryptography.primitives.nuspec" - ] - }, - "System.Security.Cryptography.X509Certificates/4.3.0": { - "sha512": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", - "type": "package", - "path": "system.security.cryptography.x509certificates/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.X509Certificates.dll", - "lib/net461/System.Security.Cryptography.X509Certificates.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.X509Certificates.dll", - "ref/net461/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", - "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512", - "system.security.cryptography.x509certificates.nuspec" - ] - }, - "System.Text.Encoding/4.3.0": { - "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", - "type": "package", - "path": "system.text.encoding/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.dll", - "ref/netcore50/System.Text.Encoding.xml", - "ref/netcore50/de/System.Text.Encoding.xml", - "ref/netcore50/es/System.Text.Encoding.xml", - "ref/netcore50/fr/System.Text.Encoding.xml", - "ref/netcore50/it/System.Text.Encoding.xml", - "ref/netcore50/ja/System.Text.Encoding.xml", - "ref/netcore50/ko/System.Text.Encoding.xml", - "ref/netcore50/ru/System.Text.Encoding.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.0/System.Text.Encoding.dll", - "ref/netstandard1.0/System.Text.Encoding.xml", - "ref/netstandard1.0/de/System.Text.Encoding.xml", - "ref/netstandard1.0/es/System.Text.Encoding.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.xml", - "ref/netstandard1.0/it/System.Text.Encoding.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.3/System.Text.Encoding.dll", - "ref/netstandard1.3/System.Text.Encoding.xml", - "ref/netstandard1.3/de/System.Text.Encoding.xml", - "ref/netstandard1.3/es/System.Text.Encoding.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.xml", - "ref/netstandard1.3/it/System.Text.Encoding.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.encoding.4.3.0.nupkg.sha512", - "system.text.encoding.nuspec" - ] - }, - "System.Text.Encoding.CodePages/4.5.1": { - "sha512": "4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==", - "type": "package", - "path": "system.text.encoding.codepages/4.5.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Text.Encoding.CodePages.dll", - "lib/net461/System.Text.Encoding.CodePages.dll", - "lib/netstandard1.3/System.Text.Encoding.CodePages.dll", - "lib/netstandard2.0/System.Text.Encoding.CodePages.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/win/lib/net461/System.Text.Encoding.CodePages.dll", - "runtimes/win/lib/netcoreapp2.0/System.Text.Encoding.CodePages.dll", - "runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll", - "runtimes/win/lib/netstandard2.0/System.Text.Encoding.CodePages.dll", - "system.text.encoding.codepages.4.5.1.nupkg.sha512", - "system.text.encoding.codepages.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Text.Encoding.Extensions/4.3.0": { - "sha512": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", - "type": "package", - "path": "system.text.encoding.extensions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.Extensions.dll", - "ref/netcore50/System.Text.Encoding.Extensions.xml", - "ref/netcore50/de/System.Text.Encoding.Extensions.xml", - "ref/netcore50/es/System.Text.Encoding.Extensions.xml", - "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", - "ref/netcore50/it/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.encoding.extensions.4.3.0.nupkg.sha512", - "system.text.encoding.extensions.nuspec" - ] - }, - "System.Text.RegularExpressions/4.3.0": { - "sha512": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", - "type": "package", - "path": "system.text.regularexpressions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Text.RegularExpressions.dll", - "lib/netcore50/System.Text.RegularExpressions.dll", - "lib/netstandard1.6/System.Text.RegularExpressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.xml", - "ref/netcore50/de/System.Text.RegularExpressions.xml", - "ref/netcore50/es/System.Text.RegularExpressions.xml", - "ref/netcore50/fr/System.Text.RegularExpressions.xml", - "ref/netcore50/it/System.Text.RegularExpressions.xml", - "ref/netcore50/ja/System.Text.RegularExpressions.xml", - "ref/netcore50/ko/System.Text.RegularExpressions.xml", - "ref/netcore50/ru/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", - "ref/netcoreapp1.1/System.Text.RegularExpressions.dll", - "ref/netstandard1.0/System.Text.RegularExpressions.dll", - "ref/netstandard1.0/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/System.Text.RegularExpressions.dll", - "ref/netstandard1.3/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/System.Text.RegularExpressions.dll", - "ref/netstandard1.6/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.regularexpressions.4.3.0.nupkg.sha512", - "system.text.regularexpressions.nuspec" - ] - }, - "System.Threading/4.3.0": { - "sha512": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", - "type": "package", - "path": "system.threading/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Threading.dll", - "lib/netstandard1.3/System.Threading.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.dll", - "ref/netcore50/System.Threading.xml", - "ref/netcore50/de/System.Threading.xml", - "ref/netcore50/es/System.Threading.xml", - "ref/netcore50/fr/System.Threading.xml", - "ref/netcore50/it/System.Threading.xml", - "ref/netcore50/ja/System.Threading.xml", - "ref/netcore50/ko/System.Threading.xml", - "ref/netcore50/ru/System.Threading.xml", - "ref/netcore50/zh-hans/System.Threading.xml", - "ref/netcore50/zh-hant/System.Threading.xml", - "ref/netstandard1.0/System.Threading.dll", - "ref/netstandard1.0/System.Threading.xml", - "ref/netstandard1.0/de/System.Threading.xml", - "ref/netstandard1.0/es/System.Threading.xml", - "ref/netstandard1.0/fr/System.Threading.xml", - "ref/netstandard1.0/it/System.Threading.xml", - "ref/netstandard1.0/ja/System.Threading.xml", - "ref/netstandard1.0/ko/System.Threading.xml", - "ref/netstandard1.0/ru/System.Threading.xml", - "ref/netstandard1.0/zh-hans/System.Threading.xml", - "ref/netstandard1.0/zh-hant/System.Threading.xml", - "ref/netstandard1.3/System.Threading.dll", - "ref/netstandard1.3/System.Threading.xml", - "ref/netstandard1.3/de/System.Threading.xml", - "ref/netstandard1.3/es/System.Threading.xml", - "ref/netstandard1.3/fr/System.Threading.xml", - "ref/netstandard1.3/it/System.Threading.xml", - "ref/netstandard1.3/ja/System.Threading.xml", - "ref/netstandard1.3/ko/System.Threading.xml", - "ref/netstandard1.3/ru/System.Threading.xml", - "ref/netstandard1.3/zh-hans/System.Threading.xml", - "ref/netstandard1.3/zh-hant/System.Threading.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Threading.dll", - "system.threading.4.3.0.nupkg.sha512", - "system.threading.nuspec" - ] - }, - "System.Threading.Tasks/4.3.0": { - "sha512": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", - "type": "package", - "path": "system.threading.tasks/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.dll", - "ref/netcore50/System.Threading.Tasks.xml", - "ref/netcore50/de/System.Threading.Tasks.xml", - "ref/netcore50/es/System.Threading.Tasks.xml", - "ref/netcore50/fr/System.Threading.Tasks.xml", - "ref/netcore50/it/System.Threading.Tasks.xml", - "ref/netcore50/ja/System.Threading.Tasks.xml", - "ref/netcore50/ko/System.Threading.Tasks.xml", - "ref/netcore50/ru/System.Threading.Tasks.xml", - "ref/netcore50/zh-hans/System.Threading.Tasks.xml", - "ref/netcore50/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.0/System.Threading.Tasks.dll", - "ref/netstandard1.0/System.Threading.Tasks.xml", - "ref/netstandard1.0/de/System.Threading.Tasks.xml", - "ref/netstandard1.0/es/System.Threading.Tasks.xml", - "ref/netstandard1.0/fr/System.Threading.Tasks.xml", - "ref/netstandard1.0/it/System.Threading.Tasks.xml", - "ref/netstandard1.0/ja/System.Threading.Tasks.xml", - "ref/netstandard1.0/ko/System.Threading.Tasks.xml", - "ref/netstandard1.0/ru/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.3/System.Threading.Tasks.dll", - "ref/netstandard1.3/System.Threading.Tasks.xml", - "ref/netstandard1.3/de/System.Threading.Tasks.xml", - "ref/netstandard1.3/es/System.Threading.Tasks.xml", - "ref/netstandard1.3/fr/System.Threading.Tasks.xml", - "ref/netstandard1.3/it/System.Threading.Tasks.xml", - "ref/netstandard1.3/ja/System.Threading.Tasks.xml", - "ref/netstandard1.3/ko/System.Threading.Tasks.xml", - "ref/netstandard1.3/ru/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.tasks.4.3.0.nupkg.sha512", - "system.threading.tasks.nuspec" - ] - }, - "System.Threading.Tasks.Extensions/4.5.3": { - "sha512": "+MvhNtcvIbqmhANyKu91jQnvIRVSTiaOiFNfKWwXGHG48YAb4I/TyH8spsySiPYla7gKal5ZnF3teJqZAximyQ==", - "type": "package", - "path": "system.threading.tasks.extensions/4.5.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/netcoreapp2.1/_._", - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", - "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", - "lib/netstandard2.0/System.Threading.Tasks.Extensions.dll", - "lib/netstandard2.0/System.Threading.Tasks.Extensions.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netcoreapp2.1/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.tasks.extensions.4.5.3.nupkg.sha512", - "system.threading.tasks.extensions.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Threading.Thread/4.0.0": { - "sha512": "gIdJqDXlOr5W9zeqFErLw3dsOsiShSCYtF9SEHitACycmvNvY8odf9kiKvp6V7aibc8C4HzzNBkWXjyfn7plbQ==", - "type": "package", - "path": "system.threading.thread/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Threading.Thread.dll", - "lib/netcore50/_._", - "lib/netstandard1.3/System.Threading.Thread.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Threading.Thread.dll", - "ref/netstandard1.3/System.Threading.Thread.dll", - "ref/netstandard1.3/System.Threading.Thread.xml", - "ref/netstandard1.3/de/System.Threading.Thread.xml", - "ref/netstandard1.3/es/System.Threading.Thread.xml", - "ref/netstandard1.3/fr/System.Threading.Thread.xml", - "ref/netstandard1.3/it/System.Threading.Thread.xml", - "ref/netstandard1.3/ja/System.Threading.Thread.xml", - "ref/netstandard1.3/ko/System.Threading.Thread.xml", - "ref/netstandard1.3/ru/System.Threading.Thread.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Thread.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Thread.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.thread.4.0.0.nupkg.sha512", - "system.threading.thread.nuspec" - ] - }, - "System.Threading.ThreadPool/4.0.10": { - "sha512": "IMXgB5Vf/5Qw1kpoVgJMOvUO1l32aC+qC3OaIZjWJOjvcxuxNWOK2ZTWWYXfij22NHxT2j1yWX5vlAeQWld9vA==", - "type": "package", - "path": "system.threading.threadpool/4.0.10", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Threading.ThreadPool.dll", - "lib/netcore50/_._", - "lib/netstandard1.3/System.Threading.ThreadPool.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Threading.ThreadPool.dll", - "ref/netstandard1.3/System.Threading.ThreadPool.dll", - "ref/netstandard1.3/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/de/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/es/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/fr/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/it/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ja/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ko/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ru/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/zh-hans/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/zh-hant/System.Threading.ThreadPool.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.threadpool.4.0.10.nupkg.sha512", - "system.threading.threadpool.nuspec" - ] - }, - "System.Threading.Timer/4.3.0": { - "sha512": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==", - "type": "package", - "path": "system.threading.timer/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net451/_._", - "lib/portable-net451+win81+wpa81/_._", - "lib/win81/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net451/_._", - "ref/netcore50/System.Threading.Timer.dll", - "ref/netcore50/System.Threading.Timer.xml", - "ref/netcore50/de/System.Threading.Timer.xml", - "ref/netcore50/es/System.Threading.Timer.xml", - "ref/netcore50/fr/System.Threading.Timer.xml", - "ref/netcore50/it/System.Threading.Timer.xml", - "ref/netcore50/ja/System.Threading.Timer.xml", - "ref/netcore50/ko/System.Threading.Timer.xml", - "ref/netcore50/ru/System.Threading.Timer.xml", - "ref/netcore50/zh-hans/System.Threading.Timer.xml", - "ref/netcore50/zh-hant/System.Threading.Timer.xml", - "ref/netstandard1.2/System.Threading.Timer.dll", - "ref/netstandard1.2/System.Threading.Timer.xml", - "ref/netstandard1.2/de/System.Threading.Timer.xml", - "ref/netstandard1.2/es/System.Threading.Timer.xml", - "ref/netstandard1.2/fr/System.Threading.Timer.xml", - "ref/netstandard1.2/it/System.Threading.Timer.xml", - "ref/netstandard1.2/ja/System.Threading.Timer.xml", - "ref/netstandard1.2/ko/System.Threading.Timer.xml", - "ref/netstandard1.2/ru/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", - "ref/portable-net451+win81+wpa81/_._", - "ref/win81/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.timer.4.3.0.nupkg.sha512", - "system.threading.timer.nuspec" - ] - }, - "System.ValueTuple/4.5.0": { - "sha512": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==", - "type": "package", - "path": "system.valuetuple/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net461/System.ValueTuple.dll", - "lib/net461/System.ValueTuple.xml", - "lib/net47/System.ValueTuple.dll", - "lib/net47/System.ValueTuple.xml", - "lib/netcoreapp2.0/_._", - "lib/netstandard1.0/System.ValueTuple.dll", - "lib/netstandard1.0/System.ValueTuple.xml", - "lib/netstandard2.0/_._", - "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", - "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.xml", - "lib/uap10.0.16299/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net461/System.ValueTuple.dll", - "ref/net47/System.ValueTuple.dll", - "ref/netcoreapp2.0/_._", - "ref/netstandard2.0/_._", - "ref/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", - "ref/uap10.0.16299/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.valuetuple.4.5.0.nupkg.sha512", - "system.valuetuple.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Xml.ReaderWriter/4.3.0": { - "sha512": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", - "type": "package", - "path": "system.xml.readerwriter/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.Xml.ReaderWriter.dll", - "lib/netcore50/System.Xml.ReaderWriter.dll", - "lib/netstandard1.3/System.Xml.ReaderWriter.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.Xml.ReaderWriter.dll", - "ref/netcore50/System.Xml.ReaderWriter.dll", - "ref/netcore50/System.Xml.ReaderWriter.xml", - "ref/netcore50/de/System.Xml.ReaderWriter.xml", - "ref/netcore50/es/System.Xml.ReaderWriter.xml", - "ref/netcore50/fr/System.Xml.ReaderWriter.xml", - "ref/netcore50/it/System.Xml.ReaderWriter.xml", - "ref/netcore50/ja/System.Xml.ReaderWriter.xml", - "ref/netcore50/ko/System.Xml.ReaderWriter.xml", - "ref/netcore50/ru/System.Xml.ReaderWriter.xml", - "ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/System.Xml.ReaderWriter.dll", - "ref/netstandard1.0/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/de/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/es/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/it/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/System.Xml.ReaderWriter.dll", - "ref/netstandard1.3/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/de/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/es/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/it/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.xml.readerwriter.4.3.0.nupkg.sha512", - "system.xml.readerwriter.nuspec" - ] - }, - "System.Xml.XDocument/4.3.0": { - "sha512": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", - "type": "package", - "path": "system.xml.xdocument/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.XDocument.dll", - "lib/netstandard1.3/System.Xml.XDocument.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.XDocument.dll", - "ref/netcore50/System.Xml.XDocument.xml", - "ref/netcore50/de/System.Xml.XDocument.xml", - "ref/netcore50/es/System.Xml.XDocument.xml", - "ref/netcore50/fr/System.Xml.XDocument.xml", - "ref/netcore50/it/System.Xml.XDocument.xml", - "ref/netcore50/ja/System.Xml.XDocument.xml", - "ref/netcore50/ko/System.Xml.XDocument.xml", - "ref/netcore50/ru/System.Xml.XDocument.xml", - "ref/netcore50/zh-hans/System.Xml.XDocument.xml", - "ref/netcore50/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.0/System.Xml.XDocument.dll", - "ref/netstandard1.0/System.Xml.XDocument.xml", - "ref/netstandard1.0/de/System.Xml.XDocument.xml", - "ref/netstandard1.0/es/System.Xml.XDocument.xml", - "ref/netstandard1.0/fr/System.Xml.XDocument.xml", - "ref/netstandard1.0/it/System.Xml.XDocument.xml", - "ref/netstandard1.0/ja/System.Xml.XDocument.xml", - "ref/netstandard1.0/ko/System.Xml.XDocument.xml", - "ref/netstandard1.0/ru/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.3/System.Xml.XDocument.dll", - "ref/netstandard1.3/System.Xml.XDocument.xml", - "ref/netstandard1.3/de/System.Xml.XDocument.xml", - "ref/netstandard1.3/es/System.Xml.XDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XDocument.xml", - "ref/netstandard1.3/it/System.Xml.XDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.xml.xdocument.4.3.0.nupkg.sha512", - "system.xml.xdocument.nuspec" - ] - }, - "System.Xml.XmlDocument/4.3.0": { - "sha512": "lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==", - "type": "package", - "path": "system.xml.xmldocument/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XmlDocument.dll", - "lib/netstandard1.3/System.Xml.XmlDocument.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XmlDocument.dll", - "ref/netstandard1.3/System.Xml.XmlDocument.dll", - "ref/netstandard1.3/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/de/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/es/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/it/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XmlDocument.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.xml.xmldocument.4.3.0.nupkg.sha512", - "system.xml.xmldocument.nuspec" - ] - }, - "System.Xml.XmlSerializer/4.0.11": { - "sha512": "FrazwwqfIXTfq23mfv4zH+BjqkSFNaNFBtjzu3I9NRmG8EELYyrv/fJnttCIwRMFRR/YKXF1hmsMmMEnl55HGw==", - "type": "package", - "path": "system.xml.xmlserializer/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.XmlSerializer.dll", - "lib/netstandard1.3/System.Xml.XmlSerializer.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.XmlSerializer.dll", - "ref/netcore50/System.Xml.XmlSerializer.xml", - "ref/netcore50/de/System.Xml.XmlSerializer.xml", - "ref/netcore50/es/System.Xml.XmlSerializer.xml", - "ref/netcore50/fr/System.Xml.XmlSerializer.xml", - "ref/netcore50/it/System.Xml.XmlSerializer.xml", - "ref/netcore50/ja/System.Xml.XmlSerializer.xml", - "ref/netcore50/ko/System.Xml.XmlSerializer.xml", - "ref/netcore50/ru/System.Xml.XmlSerializer.xml", - "ref/netcore50/zh-hans/System.Xml.XmlSerializer.xml", - "ref/netcore50/zh-hant/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/System.Xml.XmlSerializer.dll", - "ref/netstandard1.0/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/de/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/es/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/fr/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/it/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/ja/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/ko/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/ru/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/zh-hans/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/zh-hant/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/System.Xml.XmlSerializer.dll", - "ref/netstandard1.3/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/de/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/es/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/fr/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/it/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/ja/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/ko/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/ru/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XmlSerializer.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Xml.XmlSerializer.dll", - "system.xml.xmlserializer.4.0.11.nupkg.sha512", - "system.xml.xmlserializer.nuspec" - ] - }, - "System.Xml.XPath/4.0.1": { - "sha512": "UWd1H+1IJ9Wlq5nognZ/XJdyj8qPE4XufBUkAW59ijsCPjZkZe0MUzKKJFBr+ZWBe5Wq1u1d5f2CYgE93uH7DA==", - "type": "package", - "path": "system.xml.xpath/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XPath.dll", - "lib/netstandard1.3/System.Xml.XPath.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XPath.dll", - "ref/netstandard1.3/System.Xml.XPath.dll", - "ref/netstandard1.3/System.Xml.XPath.xml", - "ref/netstandard1.3/de/System.Xml.XPath.xml", - "ref/netstandard1.3/es/System.Xml.XPath.xml", - "ref/netstandard1.3/fr/System.Xml.XPath.xml", - "ref/netstandard1.3/it/System.Xml.XPath.xml", - "ref/netstandard1.3/ja/System.Xml.XPath.xml", - "ref/netstandard1.3/ko/System.Xml.XPath.xml", - "ref/netstandard1.3/ru/System.Xml.XPath.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XPath.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XPath.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.xml.xpath.4.0.1.nupkg.sha512", - "system.xml.xpath.nuspec" - ] - }, - "System.Xml.XPath.XmlDocument/4.0.1": { - "sha512": "Zm2BdeanuncYs3NhCj4c9e1x3EXFzFBVv2wPEc/Dj4ZbI9R8ecLSR5frAsx4zJCPBtKQreQ7Q/KxJEohJZbfzA==", - "type": "package", - "path": "system.xml.xpath.xmldocument/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/netstandard1.3/System.Xml.XPath.XmlDocument.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.3/System.Xml.XPath.XmlDocument.dll", - "ref/netstandard1.3/System.Xml.XPath.XmlDocument.xml", - "ref/netstandard1.3/de/System.Xml.XPath.XmlDocument.xml", - "ref/netstandard1.3/es/System.Xml.XPath.XmlDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XPath.XmlDocument.xml", - "ref/netstandard1.3/it/System.Xml.XPath.XmlDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XPath.XmlDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XPath.XmlDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XPath.XmlDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XPath.XmlDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XPath.XmlDocument.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.xml.xpath.xmldocument.4.0.1.nupkg.sha512", - "system.xml.xpath.xmldocument.nuspec" - ] - }, - "JsonApiDotNetCore.MongoDb/1.0.0": { - "type": "project", - "path": "../../src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj", - "msbuildProject": "../../src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj" - } - }, - "projectFileDependencyGroups": { - ".NETCoreApp,Version=v3.1": [ - "JsonApiDotNetCore.MongoDb >= 1.0.0", - "MSTest.TestAdapter >= 2.0.0", - "MSTest.TestFramework >= 2.0.0", - "Microsoft.NET.Test.Sdk >= 16.2.0", - "Moq >= 4.14.6", - "coverlet.collector >= 1.0.1" - ] - }, - "packageFolders": { - "/Users/mrnkr/.nuget/packages/": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj", - "projectName": "JsonApiDotNetCore.MongoDb.UnitTests", - "projectPath": "/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj", - "packagesPath": "/Users/mrnkr/.nuget/packages/", - "outputPath": "/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/test/JsonApiDotNetCore.MongoDb.UnitTests/obj/", - "projectStyle": "PackageReference", - "configFilePaths": [ - "/Users/mrnkr/.nuget/NuGet/NuGet.Config" - ], - "originalTargetFrameworks": [ - "netcoreapp3.1" - ], - "sources": { - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "netcoreapp3.1": { - "projectReferences": { - "/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj": { - "projectPath": "/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj" - } - } - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - } - }, - "frameworks": { - "netcoreapp3.1": { - "dependencies": { - "MSTest.TestAdapter": { - "target": "Package", - "version": "[2.0.0, )" - }, - "MSTest.TestFramework": { - "target": "Package", - "version": "[2.0.0, )" - }, - "Microsoft.NET.Test.Sdk": { - "target": "Package", - "version": "[16.2.0, )" - }, - "Moq": { - "target": "Package", - "version": "[4.14.6, )" - }, - "coverlet.collector": { - "target": "Package", - "version": "[1.0.1, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/3.1.100/RuntimeIdentifierGraph.json" - } - } - } -} \ No newline at end of file From 072d2ae5df8661013b016ce8c64faa8748382e52 Mon Sep 17 00:00:00 2001 From: Alvaro Nicoli Date: Tue, 6 Oct 2020 00:16:53 -0300 Subject: [PATCH 03/18] refactor: use name of class as collection name --- src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs | 5 +---- .../MongoEntityRepositoryTest.cs | 3 +-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs b/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs index 5862720..a645077 100644 --- a/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs +++ b/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs @@ -20,7 +20,6 @@ public class MongoEntityRepository where TResource : class, IIdentifiable { private readonly IMongoDatabase db; - private readonly string collectionName; private readonly ITargetedFields targetedFields; private readonly IResourceGraph resourceGraph; private readonly IResourceFactory resourceFactory; @@ -28,21 +27,19 @@ public class MongoEntityRepository public MongoEntityRepository( IMongoDatabase db, - string collectionName, ITargetedFields targetedFields, IResourceGraph resourceGraph, IResourceFactory resourceFactory, IEnumerable constraintProviders) { this.db = db; - this.collectionName = collectionName; this.targetedFields = targetedFields; this.resourceGraph = resourceGraph; this.resourceFactory = resourceFactory; this.constraintProviders = constraintProviders; } - private IMongoCollection Collection => db.GetCollection(collectionName); + private IMongoCollection Collection => db.GetCollection(typeof(TResource).Name); private IMongoQueryable Entities => this.Collection.AsQueryable(); public virtual Task CountAsync(FilterExpression topFilter) diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs b/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs index a9218f4..426267e 100644 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs @@ -20,7 +20,7 @@ public class MongoEntityRepositoryTests private IResourceRepository Repository { get; set; } private IMongoDatabase Database { get; set; } - private IMongoCollection Books => Database.GetCollection("books"); + private IMongoCollection Books => Database.GetCollection(nameof(Book)); [TestInitialize] public void BeforeEach() @@ -36,7 +36,6 @@ public void BeforeEach() Repository = new MongoEntityRepository( Database, - collectionName: "books", targetedFields.Object, resourceGraph.Object, resourceFactory.Object, From b1f832b09658f9514951b1b5f0cb7457b5f04e14 Mon Sep 17 00:00:00 2001 From: Alvaro Nicoli Date: Wed, 7 Oct 2020 13:14:46 -0300 Subject: [PATCH 04/18] Added tests for FlushFromCache and GetAsync, TODO: create mock ResourceGraph that works --- .../MongoEntityRepositoryTest.cs | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs b/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs index 426267e..0198d2b 100644 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs @@ -5,11 +5,14 @@ using JsonApiDotNetCore.Queries.Expressions; using JsonApiDotNetCore.Repositories; using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; using Microsoft.VisualStudio.TestTools.UnitTesting; using MongoDB.Driver; using Moq; +using System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Threading.Tasks; namespace JsonApiDotNetCore.MongoDb.UnitTests @@ -18,6 +21,7 @@ namespace JsonApiDotNetCore.MongoDb.UnitTests public class MongoEntityRepositoryTests { private IResourceRepository Repository { get; set; } + private IResourceGraph ResourceGraph { get; set; } private IMongoDatabase Database { get; set; } private IMongoCollection Books => Database.GetCollection(nameof(Book)); @@ -34,6 +38,7 @@ public void BeforeEach() var resourceFactory = new Mock(); var constraintProviders = new List(); + ResourceGraph = resourceGraph.Object; Repository = new MongoEntityRepository( Database, targetedFields.Object, @@ -170,5 +175,84 @@ public async Task ShouldReturnFalse() var result = await Repository.DeleteAsync("5f67c7718b884bb81fb0812e"); Assert.IsFalse(result); } + + [TestMethod] + [ExpectedException(typeof(NotImplementedException))] + public void ShouldThrowNotImplementedException() + { + // As far as I know MongoDB does not manage no cache + // and therefore there is no cache to flush + + var book = new Book + { + Name = "Basic Philosophy", + Author = "Some boring philosopher", + Category = "Philosophy", + Price = 2.00M, + }; + + Repository.FlushFromCache(book); + } + + [TestMethod] + public async Task ShouldReturnEmptyEnumerable() + { + var resourceContext = ResourceGraph.GetResourceContext(); + var result = await Repository.GetAsync(new QueryLayer(resourceContext)); + + Assert.IsTrue(result.Count == 0); + } + + [TestMethod] + public async Task ShouldReturnThreeBooks() + { + for (var i = 0; i < 3; i++) + { + var book = new Book + { + Name = $"Book {i + 1}", + Author = $"Author {i + 1}", + Category = $"Cat {i + 1}", + Price = 14.99M, + }; + + await Books.InsertOneAsync(book); + } + + var resourceContext = ResourceGraph.GetResourceContext(); + var result = await Repository.GetAsync(new QueryLayer(resourceContext)); + + Assert.AreEqual(3, result.Count); + } + + // [TestMethod] + // public async Task ShouldUpdateBookPrice() + // { + // var book = new Book + // { + // Name = "Basic Philosophy", + // Author = "Some boring philosopher", + // Category = "Philosophy", + // Price = 2.00M, + // }; + + // await Books.InsertOneAsync(book); + + // var query = Books.AsQueryable(); + // var oldDoc = await query.FirstOrDefaultAsync(); + + // var newDoc = new Book + // { + // Name = "Basic Philosophy", + // Author = "Some boring philosopher", + // Category = "Philosophy", + // Price = 5.00M, + // }; + + // await Repository.UpdateAsync(newDoc, oldDoc); + + // var saved = await query.FirstOrDefaultAsync(); + // Assert.AreEqual(5.00M, saved.Price); + // } } } From e39f4e57d4d8c4dfbaea79f86e12a812a86d7a82 Mon Sep 17 00:00:00 2001 From: Alvaro Nicoli Date: Thu, 8 Oct 2020 11:45:35 -0300 Subject: [PATCH 05/18] tested UpdateRelationshipsAsync and base case for UpdateAsync --- .../MongoEntityRepositoryTest.cs | 77 +++++++++++++++++-- 1 file changed, 72 insertions(+), 5 deletions(-) diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs b/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs index 0198d2b..d991177 100644 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs @@ -6,6 +6,7 @@ using JsonApiDotNetCore.Repositories; using JsonApiDotNetCore.Resources; using JsonApiDotNetCore.Resources.Annotations; +using Microsoft.Extensions.Logging.Abstractions; using Microsoft.VisualStudio.TestTools.UnitTesting; using MongoDB.Driver; using Moq; @@ -33,20 +34,49 @@ public void BeforeEach() Database = client.GetDatabase("JsonApiDotNet_MongoDb_Test"); var targetedFields = new Mock(); - var resourceGraph = new Mock(); - resourceGraph.Setup(g => g.GetResourceContext()).Returns(new Mock().Object); + targetedFields.Setup(tf => tf.Attributes).Returns(new List()); + var resourceGraph = BuildGraph(); var resourceFactory = new Mock(); var constraintProviders = new List(); - ResourceGraph = resourceGraph.Object; + ResourceGraph = resourceGraph; Repository = new MongoEntityRepository( Database, targetedFields.Object, - resourceGraph.Object, + resourceGraph, resourceFactory.Object, constraintProviders); } + // private IList BookAttributes() + // { + // var ret = new List(); + + // foreach (var property in typeof(Book).GetProperties()) + // { + // var attr = (AttrAttribute)property + // .GetCustomAttributes() + // .Where(attr => attr.GetType() == typeof(AttrAttribute)) + // .FirstOrDefault(); + + // if (attr != null) + // { + // var mock = new Mock(); + // mock.Setup(p => p.Property).Returns(property); + // ret.Add((AttrAttribute)mock.Object); + // } + // } + + // return ret; + // } + + private IResourceGraph BuildGraph() + { + var resourceGraphBuilder = new ResourceGraphBuilder(new JsonApiOptions(), NullLoggerFactory.Instance); + resourceGraphBuilder.Add(); + return resourceGraphBuilder.Build(); + } + [TestCleanup] public async Task AfterEach() { @@ -178,7 +208,7 @@ public async Task ShouldReturnFalse() [TestMethod] [ExpectedException(typeof(NotImplementedException))] - public void ShouldThrowNotImplementedException() + public void ShouldThrowNotImplementedExceptionFlushFromCache() { // As far as I know MongoDB does not manage no cache // and therefore there is no cache to flush @@ -225,6 +255,36 @@ public async Task ShouldReturnThreeBooks() Assert.AreEqual(3, result.Count); } + [TestMethod] + public async Task ShouldNotUpdate() + { + var book = new Book + { + Name = "Basic Philosophy", + Author = "Some boring philosopher", + Category = "Philosophy", + Price = 2.00M, + }; + + await Books.InsertOneAsync(book); + + var query = Books.AsQueryable(); + var oldDoc = await query.FirstOrDefaultAsync(); + + var newDoc = new Book + { + Name = "Basic Philosophy", + Author = "Some boring philosopher", + Category = "Philosophy", + Price = 5.00M, + }; + + await Repository.UpdateAsync(newDoc, oldDoc); + + var saved = await query.FirstOrDefaultAsync(); + Assert.AreEqual(book.Price, saved.Price); + } + // [TestMethod] // public async Task ShouldUpdateBookPrice() // { @@ -254,5 +314,12 @@ public async Task ShouldReturnThreeBooks() // var saved = await query.FirstOrDefaultAsync(); // Assert.AreEqual(5.00M, saved.Price); // } + + [TestMethod] + [ExpectedException(typeof(NotImplementedException))] + public async Task ShouldThrowNotImplementedExceptionUpdateRelationships() + { + await Repository.UpdateRelationshipAsync(null, null, null); + } } } From b678ce0a982ad5f6697bc8ec64d7fed3161c471a Mon Sep 17 00:00:00 2001 From: Alvaro Nicoli Date: Thu, 8 Oct 2020 11:51:23 -0300 Subject: [PATCH 06/18] configured code coverage --- ...JsonApiDotNetCore.MongoDb.UnitTests.csproj | 5 +- .../coverage/lcov-coverage.info | 245 ++++++++++++++++++ 2 files changed, 249 insertions(+), 1 deletion(-) create mode 100644 test/JsonApiDotNetCore.MongoDb.UnitTests/coverage/lcov-coverage.info diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj b/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj index bdb1862..050c836 100644 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj @@ -7,11 +7,14 @@ + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + - diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/coverage/lcov-coverage.info b/test/JsonApiDotNetCore.MongoDb.UnitTests/coverage/lcov-coverage.info new file mode 100644 index 0000000..2a7ebd4 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/coverage/lcov-coverage.info @@ -0,0 +1,245 @@ +SF:/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs +FN:40,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyQuery(JsonApiDotNetCore.Queries.QueryLayer) +FNDA:4,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyQuery(JsonApiDotNetCore.Queries.QueryLayer) +DA:41,4 +DA:42,0 +DA:44,4 +DA:46,4 +DA:47,0 +DA:48,0 +DA:49,0 +DA:51,4 +DA:52,2 +DA:53,2 +DA:54,2 +DA:56,4 +DA:57,0 +DA:58,0 +DA:59,0 +DA:61,4 +DA:62,0 +DA:63,0 +DA:64,0 +DA:66,4 +DA:67,0 +DA:68,0 +DA:69,0 +DA:71,4 +DA:72,4 +BRDA:42,7,0,0 +BRDA:42,7,1,4 +BRDA:46,38,0,0 +BRDA:46,38,1,4 +BRDA:51,73,0,2 +BRDA:51,73,1,4 +BRDA:56,104,0,0 +BRDA:56,104,1,4 +BRDA:61,135,0,0 +BRDA:61,135,1,4 +BRDA:66,159,0,0 +BRDA:66,159,1,4 +BRDA:66,179,0,0 +BRDA:66,179,1,4 +FN:74,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyInclude(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.IncludeExpression,JsonApiDotNetCore.Configuration.ResourceContext) +FNDA:0,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyInclude(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.IncludeExpression,JsonApiDotNetCore.Configuration.ResourceContext) +DA:75,0 +DA:76,0 +FN:79,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyFilter(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.FilterExpression) +FNDA:2,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyFilter(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.FilterExpression) +DA:80,2 +DA:81,2 +DA:83,2 +DA:84,2 +DA:85,2 +FN:87,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplySort(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.SortExpression) +FNDA:0,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplySort(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.SortExpression) +DA:88,0 +DA:89,0 +DA:91,0 +DA:92,0 +DA:93,0 +FN:95,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyPagination(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.PaginationExpression) +FNDA:0,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyPagination(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.PaginationExpression) +DA:96,0 +DA:97,0 +DA:99,0 +DA:100,0 +DA:101,0 +FN:103,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyProjection(System.Linq.Expressions.Expression,System.Collections.Generic.IDictionary`2,JsonApiDotNetCore.Configuration.ResourceContext) +FNDA:0,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyProjection(System.Linq.Expressions.Expression,System.Collections.Generic.IDictionary`2,JsonApiDotNetCore.Configuration.ResourceContext) +DA:104,0 +DA:105,0 +FN:26,System.Void JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::.ctor(System.Linq.Expressions.Expression,System.Type,System.Type,JsonApiDotNetCore.Queries.Internal.QueryableBuilding.LambdaParameterNameFactory,JsonApiDotNetCore.Resources.IResourceFactory,JsonApiDotNetCore.Configuration.IResourceContextProvider,JsonApiDotNetCore.Queries.Internal.QueryableBuilding.LambdaScopeFactory) +FNDA:4,System.Void JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::.ctor(System.Linq.Expressions.Expression,System.Type,System.Type,JsonApiDotNetCore.Queries.Internal.QueryableBuilding.LambdaParameterNameFactory,JsonApiDotNetCore.Resources.IResourceFactory,JsonApiDotNetCore.Configuration.IResourceContextProvider,JsonApiDotNetCore.Queries.Internal.QueryableBuilding.LambdaScopeFactory) +DA:27,4 +DA:28,4 +DA:29,4 +DA:30,4 +DA:31,4 +DA:32,4 +DA:33,4 +DA:34,4 +DA:35,4 +DA:36,4 +DA:37,4 +DA:38,4 +BRDA:31,11,0,0 +BRDA:31,11,1,4 +BRDA:32,33,0,0 +BRDA:32,33,1,4 +BRDA:33,55,0,0 +BRDA:33,55,1,4 +BRDA:34,78,0,0 +BRDA:34,78,1,4 +BRDA:35,101,0,0 +BRDA:35,101,1,4 +BRDA:36,124,0,0 +BRDA:36,124,1,4 +BRDA:37,147,0,4 +BRDA:37,147,1,4 +LF:56 +LH:29 +BRF:28 +BRH:16 +FNF:7 +FNH:3 +end_of_record +SF:/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/JsonApiDotNetCore.MongoDb/Extensions/MongoIQueryableExtensions.cs +FN:27,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions::ToMongoQueryable(System.Linq.IQueryable`1) +FNDA:2,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions::ToMongoQueryable(System.Linq.IQueryable`1) +DA:28,2 +DA:29,2 +DA:30,0 +DA:31,0 +DA:34,2 +DA:35,2 +BRDA:29,17,0,0 +BRDA:29,17,1,2 +FN:12,System.Void JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions/d__0`1::MoveNext() +FNDA:2,System.Void JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions/d__0`1::MoveNext() +DA:13,2 +DA:14,2 +DA:15,2 +FN:17,System.Void JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions/d__1`1::MoveNext() +FNDA:0,System.Void JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions/d__1`1::MoveNext() +DA:18,0 +DA:19,0 +DA:20,0 +FN:22,System.Void JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions/d__2`1::MoveNext() +FNDA:0,System.Void JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions/d__2`1::MoveNext() +DA:23,0 +DA:24,0 +DA:25,0 +LF:15 +LH:7 +BRF:2 +BRH:1 +FNF:4 +FNH:2 +end_of_record +SF:/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs +FN:41,MongoDB.Driver.IMongoCollection`1 JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::get_Collection() +FNDA:10,MongoDB.Driver.IMongoCollection`1 JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::get_Collection() +DA:42,10 +FN:42,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::get_Entities() +FNDA:4,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::get_Entities() +DA:43,4 +FN:45,System.Threading.Tasks.Task`1 JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::CountAsync(JsonApiDotNetCore.Queries.Expressions.FilterExpression) +FNDA:2,System.Threading.Tasks.Task`1 JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::CountAsync(JsonApiDotNetCore.Queries.Expressions.FilterExpression) +DA:46,2 +DA:47,2 +DA:48,2 +DA:49,2 +DA:50,2 +DA:51,2 +DA:53,2 +DA:54,2 +DA:55,2 +FN:57,System.Threading.Tasks.Task JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::CreateAsync(TResource) +FNDA:2,System.Threading.Tasks.Task JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::CreateAsync(TResource) +DA:58,2 +DA:59,2 +DA:60,2 +FN:68,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::FlushFromCache(TResource) +FNDA:1,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::FlushFromCache(TResource) +DA:69,1 +DA:70,1 +FN:87,System.Threading.Tasks.Task JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::UpdateRelationshipAsync(System.Object,JsonApiDotNetCore.Resources.Annotations.RelationshipAttribute,System.Collections.Generic.IReadOnlyCollection`1) +FNDA:1,System.Threading.Tasks.Task JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::UpdateRelationshipAsync(System.Object,JsonApiDotNetCore.Resources.Annotations.RelationshipAttribute,System.Collections.Generic.IReadOnlyCollection`1) +DA:88,1 +DA:89,1 +FN:92,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::ApplyQueryLayer(JsonApiDotNetCore.Queries.QueryLayer) +FNDA:4,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::ApplyQueryLayer(JsonApiDotNetCore.Queries.QueryLayer) +DA:93,4 +DA:94,0 +DA:96,4 +DA:98,4 +DA:99,0 +DA:100,0 +DA:101,0 +DA:102,4 +DA:103,4 +DA:105,0 +DA:106,0 +DA:107,0 +DA:108,0 +DA:110,4 +DA:111,4 +DA:113,4 +DA:114,4 +DA:115,4 +BRDA:94,9,0,0 +BRDA:94,9,1,4 +BRDA:98,41,0,1 +BRDA:98,41,1,4 +BRDA:98,77,0,1 +BRDA:98,77,1,4 +BRDA:98,113,0,1 +BRDA:98,113,1,4 +BRDA:105,198,1,0 +BRDA:105,198,0,4 +FN:27,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::.ctor(MongoDB.Driver.IMongoDatabase,JsonApiDotNetCore.Resources.ITargetedFields,JsonApiDotNetCore.Configuration.IResourceGraph,JsonApiDotNetCore.Resources.IResourceFactory,System.Collections.Generic.IEnumerable`1) +FNDA:12,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::.ctor(MongoDB.Driver.IMongoDatabase,JsonApiDotNetCore.Resources.ITargetedFields,JsonApiDotNetCore.Configuration.IResourceGraph,JsonApiDotNetCore.Resources.IResourceFactory,System.Collections.Generic.IEnumerable`1) +DA:28,12 +DA:29,12 +DA:30,12 +DA:31,12 +DA:32,12 +DA:33,12 +DA:34,12 +DA:35,12 +DA:36,12 +DA:37,12 +DA:38,12 +DA:39,12 +DA:40,12 +FN:62,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2/d__12::MoveNext() +FNDA:3,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2/d__12::MoveNext() +DA:63,3 +DA:64,3 +DA:65,3 +DA:66,3 +BRDA:65,248,0,3 +BRDA:65,248,1,0 +FN:73,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2/d__14::MoveNext() +FNDA:2,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2/d__14::MoveNext() +DA:74,2 +DA:75,2 +DA:76,2 +DA:77,2 +FN:79,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2/d__15::MoveNext() +FNDA:1,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2/d__15::MoveNext() +DA:80,1 +DA:81,0 +DA:82,0 +DA:84,1 +DA:85,1 +BRDA:81,128,1,0 +BRDA:81,128,0,1 +LF:62 +LH:52 +BRF:14 +BRH:10 +FNF:11 +FNH:11 +end_of_record \ No newline at end of file From 76a47e92d543313e430e13d82fd9df84edd172fa Mon Sep 17 00:00:00 2001 From: Alvaro Nicoli Date: Thu, 8 Oct 2020 11:55:39 -0300 Subject: [PATCH 07/18] configured travis --- .travis.yml | 9 +++++++++ README.md | 4 ++++ 2 files changed, 13 insertions(+) create mode 100644 .travis.yml create mode 100644 README.md diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..9952dd4 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,9 @@ +language: csharp +mono: none +dotnet: 3.1.100 +solution: JsonApiDotNetCore.MongoDb.sln +script: + - dotnet restore + - dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./coverage/lcov-coverage +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/README.md b/README.md new file mode 100644 index 0000000..2300b39 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# JsonApiDotNet MongoDB Repository + +[![Build Status](https://travis-ci.com/mrnkr/JsonApiDotNetCore.MongoDb.svg?branch=master)](https://travis-ci.com/mrnkr/JsonApiDotNetCore.MongoDb) +[![codecov](https://codecov.io/gh/mrnkr/JsonApiDotNetCore.MongoDb/branch/master/graph/badge.svg)](https://codecov.io/gh/mrnkr/JsonApiDotNetCore.MongoDb) From 0c0fa56e1a6060476b47f1a425f10395b2f1bb70 Mon Sep 17 00:00:00 2001 From: Alvaro Nicoli Date: Thu, 8 Oct 2020 12:01:27 -0300 Subject: [PATCH 08/18] fix: add mongodb to travis --- .travis.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.travis.yml b/.travis.yml index 9952dd4..b98280e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,10 @@ language: csharp mono: none dotnet: 3.1.100 solution: JsonApiDotNetCore.MongoDb.sln +services: + - mongodb +before_script: + - sleep 15 script: - dotnet restore - dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./coverage/lcov-coverage From 282cbcf41fdc47831c544d1bbfb2124fa15e74e2 Mon Sep 17 00:00:00 2001 From: Alvaro Nicoli Date: Wed, 28 Oct 2020 22:49:45 -0300 Subject: [PATCH 09/18] test: UpdateAsync --- .../Data/MongoEntityRepository.cs | 2 +- .../MongoEntityRepositoryTest.cs | 98 +++++++++---------- .../coverage/lcov-coverage.info | 52 +++++----- 3 files changed, 73 insertions(+), 79 deletions(-) diff --git a/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs b/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs index a645077..8abfb2c 100644 --- a/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs +++ b/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs @@ -81,7 +81,7 @@ public virtual async Task UpdateAsync(TResource requestResource, TResource datab foreach (var attr in targetedFields.Attributes) attr.SetValue(databaseResource, attr.GetValue(requestResource)); - await Collection.ReplaceOneAsync(Builders.Filter.Eq(e => e.Id, requestResource.Id), databaseResource); + await Collection.ReplaceOneAsync(Builders.Filter.Eq(e => e.Id, databaseResource.Id), databaseResource); } public virtual Task UpdateRelationshipAsync(object parent, RelationshipAttribute relationship, IReadOnlyCollection relationshipIds) diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs b/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs index d991177..1fee0ad 100644 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs @@ -19,7 +19,7 @@ namespace JsonApiDotNetCore.MongoDb.UnitTests { [TestClass] - public class MongoEntityRepositoryTests + public sealed class MongoEntityRepositoryTests { private IResourceRepository Repository { get; set; } private IResourceGraph ResourceGraph { get; set; } @@ -27,6 +27,8 @@ public class MongoEntityRepositoryTests private IMongoCollection Books => Database.GetCollection(nameof(Book)); + private Mock TargetedFields { get; set; } + [TestInitialize] public void BeforeEach() { @@ -39,6 +41,7 @@ public void BeforeEach() var resourceFactory = new Mock(); var constraintProviders = new List(); + TargetedFields = targetedFields; ResourceGraph = resourceGraph; Repository = new MongoEntityRepository( Database, @@ -48,28 +51,6 @@ public void BeforeEach() constraintProviders); } - // private IList BookAttributes() - // { - // var ret = new List(); - - // foreach (var property in typeof(Book).GetProperties()) - // { - // var attr = (AttrAttribute)property - // .GetCustomAttributes() - // .Where(attr => attr.GetType() == typeof(AttrAttribute)) - // .FirstOrDefault(); - - // if (attr != null) - // { - // var mock = new Mock(); - // mock.Setup(p => p.Property).Returns(property); - // ret.Add((AttrAttribute)mock.Object); - // } - // } - - // return ret; - // } - private IResourceGraph BuildGraph() { var resourceGraphBuilder = new ResourceGraphBuilder(new JsonApiOptions(), NullLoggerFactory.Instance); @@ -285,35 +266,48 @@ public async Task ShouldNotUpdate() Assert.AreEqual(book.Price, saved.Price); } - // [TestMethod] - // public async Task ShouldUpdateBookPrice() - // { - // var book = new Book - // { - // Name = "Basic Philosophy", - // Author = "Some boring philosopher", - // Category = "Philosophy", - // Price = 2.00M, - // }; - - // await Books.InsertOneAsync(book); - - // var query = Books.AsQueryable(); - // var oldDoc = await query.FirstOrDefaultAsync(); - - // var newDoc = new Book - // { - // Name = "Basic Philosophy", - // Author = "Some boring philosopher", - // Category = "Philosophy", - // Price = 5.00M, - // }; - - // await Repository.UpdateAsync(newDoc, oldDoc); - - // var saved = await query.FirstOrDefaultAsync(); - // Assert.AreEqual(5.00M, saved.Price); - // } + [TestMethod] + public async Task ShouldUpdateBookPrice() + { + TargetedFields.Setup(tf => tf.Attributes).Returns(BookAttributes()); + + var book = new Book + { + Name = "Basic Philosophy", + Author = "Some boring philosopher", + Category = "Philosophy", + Price = 2.00M, + }; + + await Books.InsertOneAsync(book); + + var newDoc = new Book + { + Name = "Basic Philosophy", + Author = "Some boring philosopher", + Category = "Philosophy", + Price = 5.00M, + }; + + await Repository.UpdateAsync(newDoc, book); + + var saved = await Books.AsQueryable().FirstOrDefaultAsync(); + Assert.AreEqual(5.00M, saved.Price); + } + + private IList BookAttributes() + { + var priceAttr = new AttrAttribute + { + PublicName = "price" + }; + + typeof(AttrAttribute) + .GetProperty(nameof(AttrAttribute.Property)) + .SetValue(priceAttr, typeof(Book).GetProperty(nameof(Book.Price))); + + return new List { priceAttr }; + } [TestMethod] [ExpectedException(typeof(NotImplementedException))] diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/coverage/lcov-coverage.info b/test/JsonApiDotNetCore.MongoDb.UnitTests/coverage/lcov-coverage.info index 2a7ebd4..2db7f0f 100644 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/coverage/lcov-coverage.info +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/coverage/lcov-coverage.info @@ -139,8 +139,8 @@ FNH:2 end_of_record SF:/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs FN:41,MongoDB.Driver.IMongoCollection`1 JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::get_Collection() -FNDA:10,MongoDB.Driver.IMongoCollection`1 JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::get_Collection() -DA:42,10 +FNDA:11,MongoDB.Driver.IMongoCollection`1 JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::get_Collection() +DA:42,11 FN:42,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::get_Entities() FNDA:4,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::get_Entities() DA:43,4 @@ -199,20 +199,20 @@ BRDA:98,113,1,4 BRDA:105,198,1,0 BRDA:105,198,0,4 FN:27,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::.ctor(MongoDB.Driver.IMongoDatabase,JsonApiDotNetCore.Resources.ITargetedFields,JsonApiDotNetCore.Configuration.IResourceGraph,JsonApiDotNetCore.Resources.IResourceFactory,System.Collections.Generic.IEnumerable`1) -FNDA:12,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::.ctor(MongoDB.Driver.IMongoDatabase,JsonApiDotNetCore.Resources.ITargetedFields,JsonApiDotNetCore.Configuration.IResourceGraph,JsonApiDotNetCore.Resources.IResourceFactory,System.Collections.Generic.IEnumerable`1) -DA:28,12 -DA:29,12 -DA:30,12 -DA:31,12 -DA:32,12 -DA:33,12 -DA:34,12 -DA:35,12 -DA:36,12 -DA:37,12 -DA:38,12 -DA:39,12 -DA:40,12 +FNDA:13,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2::.ctor(MongoDB.Driver.IMongoDatabase,JsonApiDotNetCore.Resources.ITargetedFields,JsonApiDotNetCore.Configuration.IResourceGraph,JsonApiDotNetCore.Resources.IResourceFactory,System.Collections.Generic.IEnumerable`1) +DA:28,13 +DA:29,13 +DA:30,13 +DA:31,13 +DA:32,13 +DA:33,13 +DA:34,13 +DA:35,13 +DA:36,13 +DA:37,13 +DA:38,13 +DA:39,13 +DA:40,13 FN:62,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2/d__12::MoveNext() FNDA:3,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2/d__12::MoveNext() DA:63,3 @@ -228,18 +228,18 @@ DA:75,2 DA:76,2 DA:77,2 FN:79,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2/d__15::MoveNext() -FNDA:1,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2/d__15::MoveNext() -DA:80,1 -DA:81,0 -DA:82,0 -DA:84,1 -DA:85,1 -BRDA:81,128,1,0 -BRDA:81,128,0,1 +FNDA:2,System.Void JsonApiDotNetCore.MongoDb.Data.MongoEntityRepository`2/d__15::MoveNext() +DA:80,2 +DA:81,8 +DA:82,1 +DA:84,2 +DA:85,2 +BRDA:81,128,1,1 +BRDA:81,128,0,2 LF:62 -LH:52 +LH:54 BRF:14 -BRH:10 +BRH:11 FNF:11 FNH:11 end_of_record \ No newline at end of file From a04c4c495d54b614c18225713b02dba412500666 Mon Sep 17 00:00:00 2001 From: Alvaro Nicoli Date: Fri, 30 Oct 2020 21:57:17 -0300 Subject: [PATCH 10/18] refactor: migrate to xunit --- ...JsonApiDotNetCore.MongoDb.UnitTests.csproj | 7 +- .../MongoEntityRepositoryTest.cs | 81 ++++++++++--------- 2 files changed, 47 insertions(+), 41 deletions(-) diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj b/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj index 050c836..58bc832 100644 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj @@ -13,8 +13,11 @@ - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs b/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs index 1fee0ad..a56aae8 100644 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs @@ -7,19 +7,17 @@ using JsonApiDotNetCore.Resources; using JsonApiDotNetCore.Resources.Annotations; using Microsoft.Extensions.Logging.Abstractions; -using Microsoft.VisualStudio.TestTools.UnitTesting; using MongoDB.Driver; using Moq; using System; using System.Collections.Generic; using System.Linq; -using System.Reflection; using System.Threading.Tasks; +using Xunit; namespace JsonApiDotNetCore.MongoDb.UnitTests { - [TestClass] - public sealed class MongoEntityRepositoryTests + public sealed class MongoEntityRepositoryTests : IAsyncLifetime { private IResourceRepository Repository { get; set; } private IResourceGraph ResourceGraph { get; set; } @@ -29,8 +27,7 @@ public sealed class MongoEntityRepositoryTests private Mock TargetedFields { get; set; } - [TestInitialize] - public void BeforeEach() + public MongoEntityRepositoryTests() { var client = new MongoClient("mongodb://localhost:27017"); Database = client.GetDatabase("JsonApiDotNet_MongoDb_Test"); @@ -58,13 +55,11 @@ private IResourceGraph BuildGraph() return resourceGraphBuilder.Build(); } - [TestCleanup] - public async Task AfterEach() - { - await Books.DeleteManyAsync(Builders.Filter.Empty); - } + public Task InitializeAsync() => Task.CompletedTask; + + public async Task DisposeAsync() => await Books.DeleteManyAsync(Builders.Filter.Empty); - [TestMethod] + [Fact] public async Task ShouldCountZero() { var result = await Repository.CountAsync( @@ -73,10 +68,10 @@ public async Task ShouldCountZero() new LiteralConstantExpression(bool.FalseString), new LiteralConstantExpression(bool.FalseString))); - Assert.AreEqual(0, result); + Assert.Equal(0, result); } - [TestMethod] + [Fact] public async Task ShouldCountThree() { for (var i = 0; i < 3; i++) @@ -98,10 +93,10 @@ public async Task ShouldCountThree() new LiteralConstantExpression(bool.FalseString), new LiteralConstantExpression(bool.FalseString))); - Assert.AreEqual(3, result); + Assert.Equal(3, result); } - [TestMethod] + [Fact] public async Task ShouldSaveDocument() { var book = new Book @@ -117,10 +112,10 @@ public async Task ShouldSaveDocument() var query = Books.AsQueryable(); var saved = await query.FirstOrDefaultAsync(); - Assert.AreEqual(book.Name, saved.Name); + Assert.Equal(book.Name, saved.Name); } - [TestMethod] + [Fact] public async Task ShouldGenerateObjectIdForNewDocument() { var book = new Book @@ -136,10 +131,10 @@ public async Task ShouldGenerateObjectIdForNewDocument() var query = Books.AsQueryable(); var saved = await query.FirstOrDefaultAsync(); - Assert.IsNotNull(saved.Id); + Assert.NotNull(saved.Id); } - [TestMethod] + [Fact] public async Task ShouldReturnTrue() { var book = new Book @@ -156,10 +151,10 @@ public async Task ShouldReturnTrue() var saved = await query.FirstOrDefaultAsync(); var result = await Repository.DeleteAsync(saved.Id); - Assert.IsTrue(result); + Assert.True(result); } - [TestMethod] + [Fact] public async Task ShouldDeleteDocument() { var book = new Book @@ -177,18 +172,17 @@ public async Task ShouldDeleteDocument() await Repository.DeleteAsync(saved.Id); - Assert.IsFalse(query.Any(b => b.Id == saved.Id)); + Assert.False(query.Any(b => b.Id == saved.Id)); } - [TestMethod] + [Fact] public async Task ShouldReturnFalse() { var result = await Repository.DeleteAsync("5f67c7718b884bb81fb0812e"); - Assert.IsFalse(result); + Assert.False(result); } - [TestMethod] - [ExpectedException(typeof(NotImplementedException))] + [Fact] public void ShouldThrowNotImplementedExceptionFlushFromCache() { // As far as I know MongoDB does not manage no cache @@ -202,19 +196,22 @@ public void ShouldThrowNotImplementedExceptionFlushFromCache() Price = 2.00M, }; - Repository.FlushFromCache(book); + Assert.Throws(() => + { + Repository.FlushFromCache(book); + }); } - [TestMethod] + [Fact] public async Task ShouldReturnEmptyEnumerable() { var resourceContext = ResourceGraph.GetResourceContext(); var result = await Repository.GetAsync(new QueryLayer(resourceContext)); - Assert.IsTrue(result.Count == 0); + Assert.True(result.Count == 0); } - [TestMethod] + [Fact] public async Task ShouldReturnThreeBooks() { for (var i = 0; i < 3; i++) @@ -233,10 +230,10 @@ public async Task ShouldReturnThreeBooks() var resourceContext = ResourceGraph.GetResourceContext(); var result = await Repository.GetAsync(new QueryLayer(resourceContext)); - Assert.AreEqual(3, result.Count); + Assert.Equal(3, result.Count); } - [TestMethod] + [Fact] public async Task ShouldNotUpdate() { var book = new Book @@ -263,12 +260,16 @@ public async Task ShouldNotUpdate() await Repository.UpdateAsync(newDoc, oldDoc); var saved = await query.FirstOrDefaultAsync(); - Assert.AreEqual(book.Price, saved.Price); + Assert.Equal(book.Price, saved.Price); } - [TestMethod] + [Fact] public async Task ShouldUpdateBookPrice() { + // TODO: Rewrite this test + // This test is not done properly, it can fail at times + // It is not independent of the context it's run on + TargetedFields.Setup(tf => tf.Attributes).Returns(BookAttributes()); var book = new Book @@ -292,7 +293,7 @@ public async Task ShouldUpdateBookPrice() await Repository.UpdateAsync(newDoc, book); var saved = await Books.AsQueryable().FirstOrDefaultAsync(); - Assert.AreEqual(5.00M, saved.Price); + Assert.Equal(5.00M, saved.Price); } private IList BookAttributes() @@ -309,11 +310,13 @@ private IList BookAttributes() return new List { priceAttr }; } - [TestMethod] - [ExpectedException(typeof(NotImplementedException))] + [Fact] public async Task ShouldThrowNotImplementedExceptionUpdateRelationships() { - await Repository.UpdateRelationshipAsync(null, null, null); + await Assert.ThrowsAsync(async () => + { + await Repository.UpdateRelationshipAsync(null, null, null); + }); } } } From a158d45395774c6768f9a0738a4fa83a8c6a6234 Mon Sep 17 00:00:00 2001 From: Alvaro Nicoli Date: Fri, 30 Oct 2020 23:31:35 -0300 Subject: [PATCH 11/18] feature: working demo --- .vscode/launch.json | 9 ++-- Directory.Build.props | 22 ++++++++ JsonApiDotNetCore.MongoDb.sln | 15 ++++++ src/Example/Controllers/BooksController.cs | 16 ++++++ src/Example/Example.csproj | 14 +++++ src/Example/Models/Book.cs | 30 +++++++++++ src/Example/Program.cs | 20 +++++++ src/Example/Properties/launchSettings.json | 31 +++++++++++ src/Example/README.md | 14 +++++ src/Example/Startup.cs | 54 +++++++++++++++++++ src/Example/appsettings.json | 14 +++++ .../JsonApiDotNetCore.MongoDb.csproj | 23 ++++++-- .../QueryableBuilding/QueryableBuilder.cs | 6 ++- ...JsonApiDotNetCore.MongoDb.UnitTests.csproj | 13 +++-- 14 files changed, 266 insertions(+), 15 deletions(-) create mode 100644 Directory.Build.props create mode 100644 src/Example/Controllers/BooksController.cs create mode 100644 src/Example/Example.csproj create mode 100644 src/Example/Models/Book.cs create mode 100644 src/Example/Program.cs create mode 100644 src/Example/Properties/launchSettings.json create mode 100644 src/Example/README.md create mode 100644 src/Example/Startup.cs create mode 100644 src/Example/appsettings.json diff --git a/.vscode/launch.json b/.vscode/launch.json index 072237e..c835917 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,17 +5,18 @@ "version": "0.2.0", "configurations": [ { - "name": ".NET Core Launch (console)", + "name": ".NET Core Launch (webapi)", "type": "coreclr", "request": "launch", "preLaunchTask": "build", // If you have changed target frameworks, make sure to update the program path. - "program": "${workspaceFolder}/test/JsonApiDotNetCore.MongoDb.UnitTests/bin/Debug/netcoreapp3.1/JsonApiDotNetCore.MongoDb.UnitTests.dll", + "program": "${workspaceFolder}/src/Example/bin/Debug/netcoreapp3.1/Example.dll", "args": [], - "cwd": "${workspaceFolder}/test/JsonApiDotNetCore.MongoDb.UnitTests", + "cwd": "${workspaceFolder}/src/Example", // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console "console": "internalConsole", - "stopAtEntry": false + "stopAtEntry": false, + "requireExactSource": false }, { "name": ".NET Core Attach", diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 0000000..b427d93 --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,22 @@ + + + netcoreapp3.1 + 3.1.* + 4.0.0-beta1 + 2.11.2 + + + + $(NoWarn);1591 + true + true + + + + + 2.4.1 + 5.10.3 + 31.0.3 + 4.14.6 + + diff --git a/JsonApiDotNetCore.MongoDb.sln b/JsonApiDotNetCore.MongoDb.sln index 54a91b2..5abbdb5 100644 --- a/JsonApiDotNetCore.MongoDb.sln +++ b/JsonApiDotNetCore.MongoDb.sln @@ -11,6 +11,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{444F32D6-E EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonApiDotNetCore.MongoDb.UnitTests", "test\JsonApiDotNetCore.MongoDb.UnitTests\JsonApiDotNetCore.MongoDb.UnitTests.csproj", "{4ACC5E5A-9B74-484D-A685-7D77D9C81D39}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Example", "src\Example\Example.csproj", "{348B8A87-830B-4246-A969-D62FF2ACD44B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -48,9 +50,22 @@ Global {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|x64.Build.0 = Release|Any CPU {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|x86.ActiveCfg = Release|Any CPU {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|x86.Build.0 = Release|Any CPU + {348B8A87-830B-4246-A969-D62FF2ACD44B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {348B8A87-830B-4246-A969-D62FF2ACD44B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {348B8A87-830B-4246-A969-D62FF2ACD44B}.Debug|x64.ActiveCfg = Debug|Any CPU + {348B8A87-830B-4246-A969-D62FF2ACD44B}.Debug|x64.Build.0 = Debug|Any CPU + {348B8A87-830B-4246-A969-D62FF2ACD44B}.Debug|x86.ActiveCfg = Debug|Any CPU + {348B8A87-830B-4246-A969-D62FF2ACD44B}.Debug|x86.Build.0 = Debug|Any CPU + {348B8A87-830B-4246-A969-D62FF2ACD44B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {348B8A87-830B-4246-A969-D62FF2ACD44B}.Release|Any CPU.Build.0 = Release|Any CPU + {348B8A87-830B-4246-A969-D62FF2ACD44B}.Release|x64.ActiveCfg = Release|Any CPU + {348B8A87-830B-4246-A969-D62FF2ACD44B}.Release|x64.Build.0 = Release|Any CPU + {348B8A87-830B-4246-A969-D62FF2ACD44B}.Release|x86.ActiveCfg = Release|Any CPU + {348B8A87-830B-4246-A969-D62FF2ACD44B}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {60414F69-78A8-46CB-84F6-914B33A5F54B} = {C9B4CDB0-2411-44A7-946C-CFE758D1FDC0} {4ACC5E5A-9B74-484D-A685-7D77D9C81D39} = {444F32D6-E3D7-4CBE-82DA-98B2EB10C46E} + {348B8A87-830B-4246-A969-D62FF2ACD44B} = {C9B4CDB0-2411-44A7-946C-CFE758D1FDC0} EndGlobalSection EndGlobal diff --git a/src/Example/Controllers/BooksController.cs b/src/Example/Controllers/BooksController.cs new file mode 100644 index 0000000..e9a0b28 --- /dev/null +++ b/src/Example/Controllers/BooksController.cs @@ -0,0 +1,16 @@ +using GettingStarted.Models; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace GettingStarted.Controllers +{ + public sealed class BooksController : JsonApiController + { + public BooksController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { + } + } +} diff --git a/src/Example/Example.csproj b/src/Example/Example.csproj new file mode 100644 index 0000000..68f4699 --- /dev/null +++ b/src/Example/Example.csproj @@ -0,0 +1,14 @@ + + + $(NetCoreAppVersion) + + + + + + + + + + + diff --git a/src/Example/Models/Book.cs b/src/Example/Models/Book.cs new file mode 100644 index 0000000..4e7fab0 --- /dev/null +++ b/src/Example/Models/Book.cs @@ -0,0 +1,30 @@ +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace GettingStarted.Models +{ + public sealed class Book : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string Name { get; set; } + + [Attr] + public decimal Price { get; set; } + + [Attr] + public string Category { get; set; } + + [Attr] + public string Author { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/src/Example/Program.cs b/src/Example/Program.cs new file mode 100644 index 0000000..c7d55fc --- /dev/null +++ b/src/Example/Program.cs @@ -0,0 +1,20 @@ +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; + +namespace GettingStarted +{ + public class Program + { + public static void Main(string[] args) + { + CreateHostBuilder(args).Build().Run(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }); + } +} diff --git a/src/Example/Properties/launchSettings.json b/src/Example/Properties/launchSettings.json new file mode 100644 index 0000000..e7d2ccc --- /dev/null +++ b/src/Example/Properties/launchSettings.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:52498", + "sslPort": 44343 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "weatherforecast", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Test": { + "commandName": "Project", + "launchBrowser": true, + "launchUrl": "weatherforecast", + "applicationUrl": "https://localhost:5001;http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } + } + \ No newline at end of file diff --git a/src/Example/README.md b/src/Example/README.md new file mode 100644 index 0000000..d79afbd --- /dev/null +++ b/src/Example/README.md @@ -0,0 +1,14 @@ +## Sample project + +## Usage + +`dotnet run` to run the project + +You can verify the project is running by checking this endpoint: +`localhost:14141/api/people` + +For further documentation and implementation of a JsonApiDotnetCore Application see the documentation or GitHub page: + +Repository: https://github.com/json-api-dotnet/JsonApiDotNetCore + +Documentation: https://json-api-dotnet.github.io/ diff --git a/src/Example/Startup.cs b/src/Example/Startup.cs new file mode 100644 index 0000000..58b4e1c --- /dev/null +++ b/src/Example/Startup.cs @@ -0,0 +1,54 @@ +using GettingStarted.Models; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.MongoDb.Data; +using JsonApiDotNetCore.Repositories; +using MongoDB.Driver; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; + +namespace GettingStarted +{ + public sealed class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddSingleton(sp => + { + var client = new MongoClient(Configuration.GetSection("DatabaseSettings:ConnectionString").Value); + return client.GetDatabase(Configuration.GetSection("DatabaseSettings:Database").Value); + }); + + services.AddScoped, MongoEntityRepository>(); + services.AddJsonApi(options => + { + options.Namespace = "api"; + options.UseRelativeLinks = true; + options.IncludeTotalResourceCount = true; + options.SerializerSettings.Formatting = Formatting.Indented; + }, resources: builder => + { + builder.Add(); + }); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + app.UseHttpsRedirection(); + app.UseRouting(); + app.UseJsonApi(); + app.UseEndpoints(endpoints => endpoints.MapControllers()); + } + } +} diff --git a/src/Example/appsettings.json b/src/Example/appsettings.json new file mode 100644 index 0000000..7eecbe7 --- /dev/null +++ b/src/Example/appsettings.json @@ -0,0 +1,14 @@ +{ + "DatabaseSettings": { + "ConnectionString": "mongodb://localhost:27017", + "Database": "JsonApiDotNetCoreExample" + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "AllowedHosts": "*" +} diff --git a/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj b/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj index 60f5d3f..d663a56 100644 --- a/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj +++ b/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj @@ -1,12 +1,29 @@ - netcoreapp3.1 + 4.0.0 + $(NetCoreAppVersion) + true + + jsonapi;json:api;dotnet;core;mongodb + Persistence layer implementation for use of mongodb in applications using JsonApiDotNetCore + https://github.com/json-api-dotnet/JsonApiDotNetCore.MongoDb + MIT + false + true + true + embedded + + + + + + - - + + diff --git a/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs b/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs index 5ac10db..1542f98 100644 --- a/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs +++ b/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs @@ -1,3 +1,4 @@ +using System.Collections.Immutable; using System; using System.Collections.Generic; using System.Linq; @@ -73,7 +74,10 @@ public Expression ApplyQuery(QueryLayer layer) private Expression ApplyInclude(Expression source, IncludeExpression include, ResourceContext resourceContext) { - throw new NotImplementedException(); + using var lambdaScope = _lambdaScopeFactory.CreateScope(_elementType); + + var builder = new IncludeClauseBuilder(source, lambdaScope, resourceContext, _resourceContextProvider); + return builder.ApplyInclude(include); } private Expression ApplyFilter(Expression source, FilterExpression filter) diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj b/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj index 58bc832..07b69c3 100644 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj +++ b/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj @@ -1,7 +1,7 @@ - netcoreapp3.1 + $(NetCoreAppVersion) false @@ -11,12 +11,11 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all From 3b14b4ca8259beaa008620a34bdab657d41785e3 Mon Sep 17 00:00:00 2001 From: Alvaro Nicoli Date: Sun, 1 Nov 2020 22:43:16 -0300 Subject: [PATCH 12/18] reorganize repo --- JsonApiDotNetCore.MongoDb.sln | 88 +++++++++---------- README.md | 74 +++++++++++++++- src/Example/Startup.cs | 2 +- .../Extensions/MongoIQueryableExtensions.cs | 45 ++++------ .../{Data => }/MongoEntityRepository.cs | 31 +++---- .../QueryableBuilding/QueryableBuilder.cs | 29 +----- ...otNetCore.MongoDb.IntegrationTests.csproj} | 0 .../Models}/Book.cs | 2 +- .../MongoEntityRepositoryTest.cs | 5 +- .../coverage/lcov-coverage.info | 0 10 files changed, 150 insertions(+), 126 deletions(-) rename src/JsonApiDotNetCore.MongoDb/{Data => }/MongoEntityRepository.cs (88%) rename test/{JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj => JsonApiDotNetCore.MongoDb.IntegrationTests/JsonApiDotNetCore.MongoDb.IntegrationTests.csproj} (100%) rename test/{JsonApiDotNetCore.MongoDb.UnitTests => JsonApiDotNetCore.MongoDb.IntegrationTests/Models}/Book.cs (91%) rename test/{JsonApiDotNetCore.MongoDb.UnitTests => JsonApiDotNetCore.MongoDb.IntegrationTests}/MongoEntityRepositoryTest.cs (98%) rename test/{JsonApiDotNetCore.MongoDb.UnitTests => JsonApiDotNetCore.MongoDb.IntegrationTests}/coverage/lcov-coverage.info (100%) diff --git a/JsonApiDotNetCore.MongoDb.sln b/JsonApiDotNetCore.MongoDb.sln index 5abbdb5..0364b44 100644 --- a/JsonApiDotNetCore.MongoDb.sln +++ b/JsonApiDotNetCore.MongoDb.sln @@ -3,15 +3,15 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.26124.0 MinimumVisualStudioVersion = 15.0.26124.0 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{C9B4CDB0-2411-44A7-946C-CFE758D1FDC0}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{7E29AA10-F938-4CF8-9CAB-7ACD2D6DC784}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonApiDotNetCore.MongoDb", "src\JsonApiDotNetCore.MongoDb\JsonApiDotNetCore.MongoDb.csproj", "{60414F69-78A8-46CB-84F6-914B33A5F54B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Example", "src\Example\Example.csproj", "{600A3E66-E63F-427D-A991-4CD2067041F9}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{444F32D6-E3D7-4CBE-82DA-98B2EB10C46E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonApiDotNetCore.MongoDb", "src\JsonApiDotNetCore.MongoDb\JsonApiDotNetCore.MongoDb.csproj", "{FD312677-2A62-4B8F-A965-879B059F1755}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonApiDotNetCore.MongoDb.UnitTests", "test\JsonApiDotNetCore.MongoDb.UnitTests\JsonApiDotNetCore.MongoDb.UnitTests.csproj", "{4ACC5E5A-9B74-484D-A685-7D77D9C81D39}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{19A533AA-E006-496D-A476-364DF2B637A1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Example", "src\Example\Example.csproj", "{348B8A87-830B-4246-A969-D62FF2ACD44B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonApiDotNetCore.MongoDb.IntegrationTests", "test\JsonApiDotNetCore.MongoDb.IntegrationTests\JsonApiDotNetCore.MongoDb.IntegrationTests.csproj", "{5C59FDFE-F079-4015-9975-FEFA766F0787}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -26,46 +26,46 @@ Global HideSolutionNode = FALSE EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {60414F69-78A8-46CB-84F6-914B33A5F54B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {60414F69-78A8-46CB-84F6-914B33A5F54B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {60414F69-78A8-46CB-84F6-914B33A5F54B}.Debug|x64.ActiveCfg = Debug|Any CPU - {60414F69-78A8-46CB-84F6-914B33A5F54B}.Debug|x64.Build.0 = Debug|Any CPU - {60414F69-78A8-46CB-84F6-914B33A5F54B}.Debug|x86.ActiveCfg = Debug|Any CPU - {60414F69-78A8-46CB-84F6-914B33A5F54B}.Debug|x86.Build.0 = Debug|Any CPU - {60414F69-78A8-46CB-84F6-914B33A5F54B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {60414F69-78A8-46CB-84F6-914B33A5F54B}.Release|Any CPU.Build.0 = Release|Any CPU - {60414F69-78A8-46CB-84F6-914B33A5F54B}.Release|x64.ActiveCfg = Release|Any CPU - {60414F69-78A8-46CB-84F6-914B33A5F54B}.Release|x64.Build.0 = Release|Any CPU - {60414F69-78A8-46CB-84F6-914B33A5F54B}.Release|x86.ActiveCfg = Release|Any CPU - {60414F69-78A8-46CB-84F6-914B33A5F54B}.Release|x86.Build.0 = Release|Any CPU - {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Debug|x64.ActiveCfg = Debug|Any CPU - {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Debug|x64.Build.0 = Debug|Any CPU - {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Debug|x86.ActiveCfg = Debug|Any CPU - {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Debug|x86.Build.0 = Debug|Any CPU - {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|Any CPU.Build.0 = Release|Any CPU - {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|x64.ActiveCfg = Release|Any CPU - {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|x64.Build.0 = Release|Any CPU - {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|x86.ActiveCfg = Release|Any CPU - {4ACC5E5A-9B74-484D-A685-7D77D9C81D39}.Release|x86.Build.0 = Release|Any CPU - {348B8A87-830B-4246-A969-D62FF2ACD44B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {348B8A87-830B-4246-A969-D62FF2ACD44B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {348B8A87-830B-4246-A969-D62FF2ACD44B}.Debug|x64.ActiveCfg = Debug|Any CPU - {348B8A87-830B-4246-A969-D62FF2ACD44B}.Debug|x64.Build.0 = Debug|Any CPU - {348B8A87-830B-4246-A969-D62FF2ACD44B}.Debug|x86.ActiveCfg = Debug|Any CPU - {348B8A87-830B-4246-A969-D62FF2ACD44B}.Debug|x86.Build.0 = Debug|Any CPU - {348B8A87-830B-4246-A969-D62FF2ACD44B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {348B8A87-830B-4246-A969-D62FF2ACD44B}.Release|Any CPU.Build.0 = Release|Any CPU - {348B8A87-830B-4246-A969-D62FF2ACD44B}.Release|x64.ActiveCfg = Release|Any CPU - {348B8A87-830B-4246-A969-D62FF2ACD44B}.Release|x64.Build.0 = Release|Any CPU - {348B8A87-830B-4246-A969-D62FF2ACD44B}.Release|x86.ActiveCfg = Release|Any CPU - {348B8A87-830B-4246-A969-D62FF2ACD44B}.Release|x86.Build.0 = Release|Any CPU + {600A3E66-E63F-427D-A991-4CD2067041F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {600A3E66-E63F-427D-A991-4CD2067041F9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {600A3E66-E63F-427D-A991-4CD2067041F9}.Debug|x64.ActiveCfg = Debug|Any CPU + {600A3E66-E63F-427D-A991-4CD2067041F9}.Debug|x64.Build.0 = Debug|Any CPU + {600A3E66-E63F-427D-A991-4CD2067041F9}.Debug|x86.ActiveCfg = Debug|Any CPU + {600A3E66-E63F-427D-A991-4CD2067041F9}.Debug|x86.Build.0 = Debug|Any CPU + {600A3E66-E63F-427D-A991-4CD2067041F9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {600A3E66-E63F-427D-A991-4CD2067041F9}.Release|Any CPU.Build.0 = Release|Any CPU + {600A3E66-E63F-427D-A991-4CD2067041F9}.Release|x64.ActiveCfg = Release|Any CPU + {600A3E66-E63F-427D-A991-4CD2067041F9}.Release|x64.Build.0 = Release|Any CPU + {600A3E66-E63F-427D-A991-4CD2067041F9}.Release|x86.ActiveCfg = Release|Any CPU + {600A3E66-E63F-427D-A991-4CD2067041F9}.Release|x86.Build.0 = Release|Any CPU + {FD312677-2A62-4B8F-A965-879B059F1755}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FD312677-2A62-4B8F-A965-879B059F1755}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FD312677-2A62-4B8F-A965-879B059F1755}.Debug|x64.ActiveCfg = Debug|Any CPU + {FD312677-2A62-4B8F-A965-879B059F1755}.Debug|x64.Build.0 = Debug|Any CPU + {FD312677-2A62-4B8F-A965-879B059F1755}.Debug|x86.ActiveCfg = Debug|Any CPU + {FD312677-2A62-4B8F-A965-879B059F1755}.Debug|x86.Build.0 = Debug|Any CPU + {FD312677-2A62-4B8F-A965-879B059F1755}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FD312677-2A62-4B8F-A965-879B059F1755}.Release|Any CPU.Build.0 = Release|Any CPU + {FD312677-2A62-4B8F-A965-879B059F1755}.Release|x64.ActiveCfg = Release|Any CPU + {FD312677-2A62-4B8F-A965-879B059F1755}.Release|x64.Build.0 = Release|Any CPU + {FD312677-2A62-4B8F-A965-879B059F1755}.Release|x86.ActiveCfg = Release|Any CPU + {FD312677-2A62-4B8F-A965-879B059F1755}.Release|x86.Build.0 = Release|Any CPU + {5C59FDFE-F079-4015-9975-FEFA766F0787}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5C59FDFE-F079-4015-9975-FEFA766F0787}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5C59FDFE-F079-4015-9975-FEFA766F0787}.Debug|x64.ActiveCfg = Debug|Any CPU + {5C59FDFE-F079-4015-9975-FEFA766F0787}.Debug|x64.Build.0 = Debug|Any CPU + {5C59FDFE-F079-4015-9975-FEFA766F0787}.Debug|x86.ActiveCfg = Debug|Any CPU + {5C59FDFE-F079-4015-9975-FEFA766F0787}.Debug|x86.Build.0 = Debug|Any CPU + {5C59FDFE-F079-4015-9975-FEFA766F0787}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5C59FDFE-F079-4015-9975-FEFA766F0787}.Release|Any CPU.Build.0 = Release|Any CPU + {5C59FDFE-F079-4015-9975-FEFA766F0787}.Release|x64.ActiveCfg = Release|Any CPU + {5C59FDFE-F079-4015-9975-FEFA766F0787}.Release|x64.Build.0 = Release|Any CPU + {5C59FDFE-F079-4015-9975-FEFA766F0787}.Release|x86.ActiveCfg = Release|Any CPU + {5C59FDFE-F079-4015-9975-FEFA766F0787}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution - {60414F69-78A8-46CB-84F6-914B33A5F54B} = {C9B4CDB0-2411-44A7-946C-CFE758D1FDC0} - {4ACC5E5A-9B74-484D-A685-7D77D9C81D39} = {444F32D6-E3D7-4CBE-82DA-98B2EB10C46E} - {348B8A87-830B-4246-A969-D62FF2ACD44B} = {C9B4CDB0-2411-44A7-946C-CFE758D1FDC0} + {600A3E66-E63F-427D-A991-4CD2067041F9} = {7E29AA10-F938-4CF8-9CAB-7ACD2D6DC784} + {FD312677-2A62-4B8F-A965-879B059F1755} = {7E29AA10-F938-4CF8-9CAB-7ACD2D6DC784} + {5C59FDFE-F079-4015-9975-FEFA766F0787} = {19A533AA-E006-496D-A476-364DF2B637A1} EndGlobalSection EndGlobal diff --git a/README.md b/README.md index 2300b39..c46001f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,76 @@ -# JsonApiDotNet MongoDB Repository +# JsonApiDotNetCore MongoDB Repository [![Build Status](https://travis-ci.com/mrnkr/JsonApiDotNetCore.MongoDb.svg?branch=master)](https://travis-ci.com/mrnkr/JsonApiDotNetCore.MongoDb) [![codecov](https://codecov.io/gh/mrnkr/JsonApiDotNetCore.MongoDb/branch/master/graph/badge.svg)](https://codecov.io/gh/mrnkr/JsonApiDotNetCore.MongoDb) + +Plug-n-play implementation of `IResourceRepository` allowing you to use MongoDb with your `JsonApiDotNetCore` APIs. + +## Installation and Usage + +### Models + +```cs +public sealed class Book : IIdentifiable +{ + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string Name { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } +} +``` + +### Controllers + +```cs +public sealed class BooksController : JsonApiController +{ + public BooksController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { + } +} +``` + +### Middleware + +```cs +public class Startup +{ + public IServiceProvider ConfigureServices(IServiceCollection services) { + services.AddSingleton(sp => + { + var client = new MongoClient(Configuration.GetSection("DatabaseSettings:ConnectionString").Value); + return client.GetDatabase(Configuration.GetSection("DatabaseSettings:Database").Value); + }); + + services.AddScoped, MongoEntityRepository>(); + services.AddJsonApi(options => + { + options.Namespace = "api"; + options.UseRelativeLinks = true; + options.IncludeTotalResourceCount = true; + options.SerializerSettings.Formatting = Formatting.Indented; + }, resources: builder => + { + builder.Add(); + }); + // ... + } + + public void Configure(IApplicationBuilder app) { + app.UseJsonApi(); + // ... + } +} +``` + +## Limitations + +- Relations are not supported (yet) +- Projections are not supported (yet) diff --git a/src/Example/Startup.cs b/src/Example/Startup.cs index 58b4e1c..a34a58e 100644 --- a/src/Example/Startup.cs +++ b/src/Example/Startup.cs @@ -1,6 +1,6 @@ using GettingStarted.Models; using JsonApiDotNetCore.Configuration; -using JsonApiDotNetCore.MongoDb.Data; +using JsonApiDotNetCore.MongoDb; using JsonApiDotNetCore.Repositories; using MongoDB.Driver; using Microsoft.AspNetCore.Builder; diff --git a/src/JsonApiDotNetCore.MongoDb/Extensions/MongoIQueryableExtensions.cs b/src/JsonApiDotNetCore.MongoDb/Extensions/MongoIQueryableExtensions.cs index f245c35..52546ed 100644 --- a/src/JsonApiDotNetCore.MongoDb/Extensions/MongoIQueryableExtensions.cs +++ b/src/JsonApiDotNetCore.MongoDb/Extensions/MongoIQueryableExtensions.cs @@ -1,37 +1,26 @@ -namespace JsonApiDotNetCore.MongoDb.Extensions -{ - using System; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; - using MongoDB.Driver; - using MongoDB.Driver.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using MongoDB.Driver; +using MongoDB.Driver.Linq; +namespace JsonApiDotNetCore.MongoDb.Extensions +{ public static class MongoIQueryableExtensions { - public static async Task> ToListAsync(this IQueryable queryable) - { - return await IAsyncCursorSourceExtensions.ToListAsync(ToMongoQueryable(queryable)); - } + public static async Task> ToListAsync(this IQueryable queryable) => + await IAsyncCursorSourceExtensions.ToListAsync(ToMongoQueryable(queryable)); - public static async Task SingleOrDefaultAsync(this IQueryable queryable) - { - return await IAsyncCursorSourceExtensions.SingleOrDefaultAsync(ToMongoQueryable(queryable)); - } + public static Task SingleOrDefaultAsync(this IQueryable queryable) => + IAsyncCursorSourceExtensions.SingleOrDefaultAsync(ToMongoQueryable(queryable)); - public static async Task FirstOrDefaultAsync(this IQueryable queryable) - { - return await IAsyncCursorSourceExtensions.FirstOrDefaultAsync(ToMongoQueryable(queryable)); - } + public static Task FirstOrDefaultAsync(this IQueryable queryable) => + IAsyncCursorSourceExtensions.FirstOrDefaultAsync(ToMongoQueryable(queryable)); - private static IMongoQueryable ToMongoQueryable(IQueryable queryable) - { - if (!(queryable is IMongoQueryable mongoQueryable)) - { + private static IMongoQueryable ToMongoQueryable(IQueryable queryable) => + (queryable is IMongoQueryable mongoQueryable) ? + mongoQueryable : throw new ArgumentException($"This MongoDB-specific extension method expects a {nameof(IMongoQueryable)} and cannot work with {nameof(IQueryable)} of type {queryable.GetType().Name}."); - } - - return mongoQueryable; - } } } diff --git a/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs b/src/JsonApiDotNetCore.MongoDb/MongoEntityRepository.cs similarity index 88% rename from src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs rename to src/JsonApiDotNetCore.MongoDb/MongoEntityRepository.cs index 8abfb2c..83d5d38 100644 --- a/src/JsonApiDotNetCore.MongoDb/Data/MongoEntityRepository.cs +++ b/src/JsonApiDotNetCore.MongoDb/MongoEntityRepository.cs @@ -3,17 +3,17 @@ using System.Linq; using System.Threading.Tasks; using JsonApiDotNetCore.Configuration; -using JsonApiDotNetCore.Repositories; -using JsonApiDotNetCore.Resources; using JsonApiDotNetCore.MongoDb.Extensions; using JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding; +using JsonApiDotNetCore.Repositories; +using JsonApiDotNetCore.Resources; using MongoDB.Driver; using MongoDB.Driver.Linq; -using JsonApiDotNetCore.Queries.Expressions; using JsonApiDotNetCore.Queries; +using JsonApiDotNetCore.Queries.Expressions; using JsonApiDotNetCore.Resources.Annotations; -namespace JsonApiDotNetCore.MongoDb.Data +namespace JsonApiDotNetCore.MongoDb { public class MongoEntityRepository : IResourceRepository @@ -54,10 +54,8 @@ public virtual Task CountAsync(FilterExpression topFilter) return query.CountAsync(); } - public virtual Task CreateAsync(TResource resource) - { - return Collection.InsertOneAsync(resource); - } + public virtual Task CreateAsync(TResource resource) => + Collection.InsertOneAsync(resource); public virtual async Task DeleteAsync(TId id) { @@ -65,16 +63,11 @@ public virtual async Task DeleteAsync(TId id) return result.IsAcknowledged && result.DeletedCount > 0; } - public virtual void FlushFromCache(TResource resource) - { + public virtual void FlushFromCache(TResource resource) => throw new NotImplementedException(); - } - public virtual async Task> GetAsync(QueryLayer layer) - { - IQueryable query = ApplyQueryLayer(layer); - return await query.ToListAsync(); - } + public virtual async Task> GetAsync(QueryLayer layer) => + await ApplyQueryLayer(layer).ToListAsync(); public virtual async Task UpdateAsync(TResource requestResource, TResource databaseResource) { @@ -84,14 +77,12 @@ public virtual async Task UpdateAsync(TResource requestResource, TResource datab await Collection.ReplaceOneAsync(Builders.Filter.Eq(e => e.Id, databaseResource.Id), databaseResource); } - public virtual Task UpdateRelationshipAsync(object parent, RelationshipAttribute relationship, IReadOnlyCollection relationshipIds) - { + public virtual Task UpdateRelationshipAsync(object parent, RelationshipAttribute relationship, IReadOnlyCollection relationshipIds) => throw new NotImplementedException(); - } protected virtual IMongoQueryable ApplyQueryLayer(QueryLayer layer) { - if (layer == null) throw new ArgumentNullException(nameof(layer)); + layer = layer ?? throw new ArgumentNullException(nameof(layer)); IMongoQueryable source = Entities; diff --git a/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs b/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs index 1542f98..4ed1e6e 100644 --- a/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs +++ b/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs @@ -1,14 +1,10 @@ -using System.Collections.Immutable; using System; -using System.Collections.Generic; -using System.Linq; using System.Linq.Expressions; using JsonApiDotNetCore.Configuration; using JsonApiDotNetCore.Queries; using JsonApiDotNetCore.Queries.Expressions; using JsonApiDotNetCore.Queries.Internal.QueryableBuilding; using JsonApiDotNetCore.Resources; -using JsonApiDotNetCore.Resources.Annotations; namespace JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding { @@ -40,15 +36,10 @@ public QueryableBuilder(Expression source, Type elementType, Type extensionType, public Expression ApplyQuery(QueryLayer layer) { - if (layer == null) throw new ArgumentNullException(nameof(layer)); + layer = layer ?? throw new ArgumentNullException(nameof(layer)); Expression expression = _source; - if (layer.Include != null) - { - expression = ApplyInclude(expression, layer.Include, layer.ResourceContext); - } - if (layer.Filter != null) { expression = ApplyFilter(expression, layer.Filter); @@ -64,22 +55,9 @@ public Expression ApplyQuery(QueryLayer layer) expression = ApplyPagination(expression, layer.Pagination); } - if (layer.Projection != null && layer.Projection.Any()) - { - expression = ApplyProjection(expression, layer.Projection, layer.ResourceContext); - } - return expression; } - private Expression ApplyInclude(Expression source, IncludeExpression include, ResourceContext resourceContext) - { - using var lambdaScope = _lambdaScopeFactory.CreateScope(_elementType); - - var builder = new IncludeClauseBuilder(source, lambdaScope, resourceContext, _resourceContextProvider); - return builder.ApplyInclude(include); - } - private Expression ApplyFilter(Expression source, FilterExpression filter) { using var lambdaScope = _lambdaScopeFactory.CreateScope(_elementType); @@ -103,10 +81,5 @@ private Expression ApplyPagination(Expression source, PaginationExpression pagin var builder = new SkipTakeClauseBuilder(source, lambdaScope, _extensionType); return builder.ApplySkipTake(pagination); } - - private Expression ApplyProjection(Expression source, IDictionary projection, ResourceContext resourceContext) - { - throw new NotImplementedException(); - } } } diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj b/test/JsonApiDotNetCore.MongoDb.IntegrationTests/JsonApiDotNetCore.MongoDb.IntegrationTests.csproj similarity index 100% rename from test/JsonApiDotNetCore.MongoDb.UnitTests/JsonApiDotNetCore.MongoDb.UnitTests.csproj rename to test/JsonApiDotNetCore.MongoDb.IntegrationTests/JsonApiDotNetCore.MongoDb.IntegrationTests.csproj diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/Book.cs b/test/JsonApiDotNetCore.MongoDb.IntegrationTests/Models/Book.cs similarity index 91% rename from test/JsonApiDotNetCore.MongoDb.UnitTests/Book.cs rename to test/JsonApiDotNetCore.MongoDb.IntegrationTests/Models/Book.cs index 6ce2204..650ab4f 100644 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/Book.cs +++ b/test/JsonApiDotNetCore.MongoDb.IntegrationTests/Models/Book.cs @@ -4,7 +4,7 @@ using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; -namespace JsonApiDotNetCore.MongoDb.UnitTests.Models +namespace JsonApiDotNetCore.MongoDb.IntegrationTests.Models { public sealed class Book : IIdentifiable { diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs b/test/JsonApiDotNetCore.MongoDb.IntegrationTests/MongoEntityRepositoryTest.cs similarity index 98% rename from test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs rename to test/JsonApiDotNetCore.MongoDb.IntegrationTests/MongoEntityRepositoryTest.cs index a56aae8..336f3e9 100644 --- a/test/JsonApiDotNetCore.MongoDb.UnitTests/MongoEntityRepositoryTest.cs +++ b/test/JsonApiDotNetCore.MongoDb.IntegrationTests/MongoEntityRepositoryTest.cs @@ -1,6 +1,5 @@ using JsonApiDotNetCore.Configuration; -using JsonApiDotNetCore.MongoDb.Data; -using JsonApiDotNetCore.MongoDb.UnitTests.Models; +using JsonApiDotNetCore.MongoDb.IntegrationTests.Models; using JsonApiDotNetCore.Queries; using JsonApiDotNetCore.Queries.Expressions; using JsonApiDotNetCore.Repositories; @@ -15,7 +14,7 @@ using System.Threading.Tasks; using Xunit; -namespace JsonApiDotNetCore.MongoDb.UnitTests +namespace JsonApiDotNetCore.MongoDb.IntegrationTests { public sealed class MongoEntityRepositoryTests : IAsyncLifetime { diff --git a/test/JsonApiDotNetCore.MongoDb.UnitTests/coverage/lcov-coverage.info b/test/JsonApiDotNetCore.MongoDb.IntegrationTests/coverage/lcov-coverage.info similarity index 100% rename from test/JsonApiDotNetCore.MongoDb.UnitTests/coverage/lcov-coverage.info rename to test/JsonApiDotNetCore.MongoDb.IntegrationTests/coverage/lcov-coverage.info From 48a8602f7467b39eec1c6cecafb4c357c395eb0e Mon Sep 17 00:00:00 2001 From: Alvaro Nicoli Date: Sat, 7 Nov 2020 17:31:38 -0300 Subject: [PATCH 13/18] fix: tests --- .../.idea/contentModel.xml | 109 +++++ .../.idea/encodings.xml | 4 + .../.idea/indexLayout.xml | 8 + .../.idea/modules.xml | 8 + .../.idea/projectSettingsUpdater.xml | 6 + .../.idea/vcs.xml | 6 + .../.idea/workspace.xml | 313 ++++++++++++++ .../riderModule.iml | 10 + JsonApiDotNetCore.MongoDb.sln | 15 + ...ApiDotNetCore.MongoDb.sln.DotSettings.user | 4 + README.md | 30 +- src/Example/Controllers/BooksController.cs | 4 +- src/Example/Models/Book.cs | 3 +- src/Example/Program.cs | 4 +- src/Example/Properties/launchSettings.json | 12 +- src/Example/Startup.cs | 10 +- .../MongoEntityRepository.cs | 38 +- .../IntegrationTestWebApplicationFactory.cs | 45 ++ .../IntegrationTestContext.cs | 114 +++++ .../CreatingResourcesTests.cs | 69 +++ .../DeletingResourcesTests.cs | 73 ++++ .../FetchingResourcesTests.cs | 160 +++++++ ...ApiDotNetCore.MongoDb.Example.Tests.csproj | 28 ++ .../coverage/lcov-coverage.info | 311 ++++++++++++++ .../Models/Book.cs | 1 - .../MongoEntityRepositoryTest.cs | 259 ++--------- .../coverage/lcov-coverage.info | 406 ++++++++---------- 27 files changed, 1541 insertions(+), 509 deletions(-) create mode 100644 .idea/.idea.JsonApiDotNetCore.MongoDb/.idea/contentModel.xml create mode 100644 .idea/.idea.JsonApiDotNetCore.MongoDb/.idea/encodings.xml create mode 100644 .idea/.idea.JsonApiDotNetCore.MongoDb/.idea/indexLayout.xml create mode 100644 .idea/.idea.JsonApiDotNetCore.MongoDb/.idea/modules.xml create mode 100644 .idea/.idea.JsonApiDotNetCore.MongoDb/.idea/projectSettingsUpdater.xml create mode 100644 .idea/.idea.JsonApiDotNetCore.MongoDb/.idea/vcs.xml create mode 100644 .idea/.idea.JsonApiDotNetCore.MongoDb/.idea/workspace.xml create mode 100644 .idea/.idea.JsonApiDotNetCore.MongoDb/riderModule.iml create mode 100644 JsonApiDotNetCore.MongoDb.sln.DotSettings.user create mode 100644 test/JsonApiDotNetCore.MongoDb.Example.Tests/Factories/IntegrationTestWebApplicationFactory.cs create mode 100644 test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTestContext.cs create mode 100644 test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/CreatingResourcesTests.cs create mode 100644 test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/DeletingResourcesTests.cs create mode 100644 test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/FetchingResourcesTests.cs create mode 100644 test/JsonApiDotNetCore.MongoDb.Example.Tests/JsonApiDotNetCore.MongoDb.Example.Tests.csproj create mode 100644 test/JsonApiDotNetCore.MongoDb.Example.Tests/coverage/lcov-coverage.info diff --git a/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/contentModel.xml b/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/contentModel.xml new file mode 100644 index 0000000..701e3d0 --- /dev/null +++ b/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/contentModel.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/encodings.xml b/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/encodings.xml new file mode 100644 index 0000000..df87cf9 --- /dev/null +++ b/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/indexLayout.xml b/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/indexLayout.xml new file mode 100644 index 0000000..27ba142 --- /dev/null +++ b/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/modules.xml b/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/modules.xml new file mode 100644 index 0000000..f01f435 --- /dev/null +++ b/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/projectSettingsUpdater.xml b/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/projectSettingsUpdater.xml new file mode 100644 index 0000000..4bb9f4d --- /dev/null +++ b/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/projectSettingsUpdater.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/vcs.xml b/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/workspace.xml b/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/workspace.xml new file mode 100644 index 0000000..02d3b90 --- /dev/null +++ b/.idea/.idea.JsonApiDotNetCore.MongoDb/.idea/workspace.xml @@ -0,0 +1,313 @@ + + + + src/Example/Example.csproj + test/JsonApiDotNetCore.MongoDb.IntegrationTests/JsonApiDotNetCore.MongoDb.IntegrationTests.csproj + test/JsonApiDotNetCore.MongoDb.Example.Tests/JsonApiDotNetCore.MongoDb.Example.Tests.csproj + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1604674714591 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/.idea.JsonApiDotNetCore.MongoDb/riderModule.iml b/.idea/.idea.JsonApiDotNetCore.MongoDb/riderModule.iml deleted file mode 100644 index d233658..0000000 --- a/.idea/.idea.JsonApiDotNetCore.MongoDb/riderModule.iml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 1c08e62..6ae2058 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,11 +2,9 @@ language: csharp mono: none dotnet: 3.1.100 solution: JsonApiDotNetCore.MongoDb.sln -services: - - mongodb script: - dotnet restore - - dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./coverage/lcov-coverage + - dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./coverage/lcov-coverage /p:Include="[JsonApiDotNetCore.MongoDb]*" after_success: - bash <(curl -s https://codecov.io/bash) before_deploy: diff --git a/Directory.Build.props b/Directory.Build.props index b427d93..7f73136 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -2,8 +2,8 @@ netcoreapp3.1 3.1.* - 4.0.0-beta1 - 2.11.2 + 4.0.* + 2.11.* diff --git a/JsonApiDotNetCore.MongoDb.sln b/JsonApiDotNetCore.MongoDb.sln index e63cbca..5994f4a 100644 --- a/JsonApiDotNetCore.MongoDb.sln +++ b/JsonApiDotNetCore.MongoDb.sln @@ -5,16 +5,16 @@ VisualStudioVersion = 15.0.26124.0 MinimumVisualStudioVersion = 15.0.26124.0 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{7E29AA10-F938-4CF8-9CAB-7ACD2D6DC784}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Example", "src\Example\Example.csproj", "{600A3E66-E63F-427D-A991-4CD2067041F9}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonApiDotNetCore.MongoDb.GettingStarted", "src\JsonApiDotNetCore.MongoDb.GettingStarted\JsonApiDotNetCore.MongoDb.GettingStarted.csproj", "{600A3E66-E63F-427D-A991-4CD2067041F9}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonApiDotNetCore.MongoDb", "src\JsonApiDotNetCore.MongoDb\JsonApiDotNetCore.MongoDb.csproj", "{FD312677-2A62-4B8F-A965-879B059F1755}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{19A533AA-E006-496D-A476-364DF2B637A1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonApiDotNetCore.MongoDb.IntegrationTests", "test\JsonApiDotNetCore.MongoDb.IntegrationTests\JsonApiDotNetCore.MongoDb.IntegrationTests.csproj", "{5C59FDFE-F079-4015-9975-FEFA766F0787}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonApiDotNetCore.MongoDb.Example.Tests", "test\JsonApiDotNetCore.MongoDb.Example.Tests\JsonApiDotNetCore.MongoDb.Example.Tests.csproj", "{24CE53FA-9C49-4E20-A060-4A43DFB8C8F1}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonApiDotNetCore.MongoDb.Example", "src\JsonApiDotNetCore.MongoDb.Example\JsonApiDotNetCore.MongoDb.Example.csproj", "{743C32A5-2584-4FA0-987B-B4E97CDAADE8}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -52,18 +52,6 @@ Global {FD312677-2A62-4B8F-A965-879B059F1755}.Release|x64.Build.0 = Release|Any CPU {FD312677-2A62-4B8F-A965-879B059F1755}.Release|x86.ActiveCfg = Release|Any CPU {FD312677-2A62-4B8F-A965-879B059F1755}.Release|x86.Build.0 = Release|Any CPU - {5C59FDFE-F079-4015-9975-FEFA766F0787}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5C59FDFE-F079-4015-9975-FEFA766F0787}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5C59FDFE-F079-4015-9975-FEFA766F0787}.Debug|x64.ActiveCfg = Debug|Any CPU - {5C59FDFE-F079-4015-9975-FEFA766F0787}.Debug|x64.Build.0 = Debug|Any CPU - {5C59FDFE-F079-4015-9975-FEFA766F0787}.Debug|x86.ActiveCfg = Debug|Any CPU - {5C59FDFE-F079-4015-9975-FEFA766F0787}.Debug|x86.Build.0 = Debug|Any CPU - {5C59FDFE-F079-4015-9975-FEFA766F0787}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5C59FDFE-F079-4015-9975-FEFA766F0787}.Release|Any CPU.Build.0 = Release|Any CPU - {5C59FDFE-F079-4015-9975-FEFA766F0787}.Release|x64.ActiveCfg = Release|Any CPU - {5C59FDFE-F079-4015-9975-FEFA766F0787}.Release|x64.Build.0 = Release|Any CPU - {5C59FDFE-F079-4015-9975-FEFA766F0787}.Release|x86.ActiveCfg = Release|Any CPU - {5C59FDFE-F079-4015-9975-FEFA766F0787}.Release|x86.Build.0 = Release|Any CPU {24CE53FA-9C49-4E20-A060-4A43DFB8C8F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {24CE53FA-9C49-4E20-A060-4A43DFB8C8F1}.Debug|Any CPU.Build.0 = Debug|Any CPU {24CE53FA-9C49-4E20-A060-4A43DFB8C8F1}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -76,11 +64,23 @@ Global {24CE53FA-9C49-4E20-A060-4A43DFB8C8F1}.Release|x64.Build.0 = Release|Any CPU {24CE53FA-9C49-4E20-A060-4A43DFB8C8F1}.Release|x86.ActiveCfg = Release|Any CPU {24CE53FA-9C49-4E20-A060-4A43DFB8C8F1}.Release|x86.Build.0 = Release|Any CPU + {743C32A5-2584-4FA0-987B-B4E97CDAADE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {743C32A5-2584-4FA0-987B-B4E97CDAADE8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {743C32A5-2584-4FA0-987B-B4E97CDAADE8}.Debug|x64.ActiveCfg = Debug|Any CPU + {743C32A5-2584-4FA0-987B-B4E97CDAADE8}.Debug|x64.Build.0 = Debug|Any CPU + {743C32A5-2584-4FA0-987B-B4E97CDAADE8}.Debug|x86.ActiveCfg = Debug|Any CPU + {743C32A5-2584-4FA0-987B-B4E97CDAADE8}.Debug|x86.Build.0 = Debug|Any CPU + {743C32A5-2584-4FA0-987B-B4E97CDAADE8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {743C32A5-2584-4FA0-987B-B4E97CDAADE8}.Release|Any CPU.Build.0 = Release|Any CPU + {743C32A5-2584-4FA0-987B-B4E97CDAADE8}.Release|x64.ActiveCfg = Release|Any CPU + {743C32A5-2584-4FA0-987B-B4E97CDAADE8}.Release|x64.Build.0 = Release|Any CPU + {743C32A5-2584-4FA0-987B-B4E97CDAADE8}.Release|x86.ActiveCfg = Release|Any CPU + {743C32A5-2584-4FA0-987B-B4E97CDAADE8}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {600A3E66-E63F-427D-A991-4CD2067041F9} = {7E29AA10-F938-4CF8-9CAB-7ACD2D6DC784} {FD312677-2A62-4B8F-A965-879B059F1755} = {7E29AA10-F938-4CF8-9CAB-7ACD2D6DC784} - {5C59FDFE-F079-4015-9975-FEFA766F0787} = {19A533AA-E006-496D-A476-364DF2B637A1} {24CE53FA-9C49-4E20-A060-4A43DFB8C8F1} = {19A533AA-E006-496D-A476-364DF2B637A1} + {743C32A5-2584-4FA0-987B-B4E97CDAADE8} = {7E29AA10-F938-4CF8-9CAB-7ACD2D6DC784} EndGlobalSection EndGlobal diff --git a/JsonApiDotNetCore.MongoDb.sln.DotSettings.user b/JsonApiDotNetCore.MongoDb.sln.DotSettings.user deleted file mode 100644 index 0829a84..0000000 --- a/JsonApiDotNetCore.MongoDb.sln.DotSettings.user +++ /dev/null @@ -1,4 +0,0 @@ - - <SessionState ContinuousTestingMode="0" IsActive="True" Name="All tests from Solution" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"> - <Solution /> -</SessionState> \ No newline at end of file diff --git a/README.md b/README.md index bfdc70a..c7b5ac1 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,8 @@ public sealed class BooksController : JsonApiController ```cs public class Startup { - public IServiceProvider ConfigureServices(IServiceCollection services) { + public IServiceProvider ConfigureServices(IServiceCollection services) + { services.AddSingleton(sp => { var client = new MongoClient(Configuration.GetSection("DatabaseSettings:ConnectionString").Value); @@ -71,14 +72,33 @@ public class Startup // ... } - public void Configure(IApplicationBuilder app) { + public void Configure(IApplicationBuilder app) + { + app.UseRouting(); app.UseJsonApi(); + app.UseEndpoints(endpoints => endpoints.MapControllers()); // ... } } ``` +## Running tests and examples + +Integration tests use the [`Mongo2Go`](https://github.com/Mongo2Go/Mongo2Go) package so they don't require a running instance of MongoDb on your machine. + +Just run the following command to run all tests: + +```bash +dotnet test +``` + +To run the examples you are indeed going to want to have a running instance of MongoDb on your device. Fastest way to get one running is using docker: + +```bash +docker run -p 27017:27017 -d mongo:latest +dotnet run +``` + ## Limitations - Relations are not supported (yet) -- Projections are not supported (yet) diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/ArticlesController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/ArticlesController.cs new file mode 100644 index 0000000..0aa0aa1 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/ArticlesController.cs @@ -0,0 +1,18 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + public sealed class ArticlesController : JsonApiController + { + public ArticlesController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/AuthorsController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/AuthorsController.cs new file mode 100644 index 0000000..73b9962 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/AuthorsController.cs @@ -0,0 +1,18 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + public sealed class AuthorsController : JsonApiController + { + public AuthorsController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/BlogsController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/BlogsController.cs new file mode 100644 index 0000000..6805d16 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/BlogsController.cs @@ -0,0 +1,18 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + public sealed class BlogsController : JsonApiController + { + public BlogsController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/CountriesController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/CountriesController.cs new file mode 100644 index 0000000..78ef4af --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/CountriesController.cs @@ -0,0 +1,21 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.Controllers.Annotations; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.QueryStrings; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + [DisableQueryString(StandardQueryStringParameters.Sort | StandardQueryStringParameters.Page)] + public sealed class CountriesController : JsonApiController + { + public CountriesController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/PassportsController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/PassportsController.cs new file mode 100644 index 0000000..b61ee4b --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/PassportsController.cs @@ -0,0 +1,16 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + public sealed class PassportsController : JsonApiController + { + public PassportsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/PeopleController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/PeopleController.cs new file mode 100644 index 0000000..8710d52 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/PeopleController.cs @@ -0,0 +1,18 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + public sealed class PeopleController : JsonApiController + { + public PeopleController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/PersonRolesController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/PersonRolesController.cs new file mode 100644 index 0000000..9bf10f1 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/PersonRolesController.cs @@ -0,0 +1,18 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + public sealed class PersonRolesController : JsonApiController + { + public PersonRolesController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/Restricted/ReadOnlyController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/Restricted/ReadOnlyController.cs new file mode 100644 index 0000000..31c120f --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/Restricted/ReadOnlyController.cs @@ -0,0 +1,106 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.Controllers.Annotations; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Services; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers.Restricted +{ + [DisableRoutingConvention, Route("[controller]")] + [HttpReadOnly] + public class ReadOnlyController : BaseJsonApiController + { + public ReadOnlyController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + + [HttpGet] + public IActionResult Get() => Ok(); + + [HttpPost] + public IActionResult Post() => Ok(); + + [HttpPatch] + public IActionResult Patch() => Ok(); + + [HttpDelete] + public IActionResult Delete() => Ok(); + } + + [DisableRoutingConvention, Route("[controller]")] + [NoHttpPost] + public class NoHttpPostController : BaseJsonApiController + { + public NoHttpPostController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + + [HttpGet] + public IActionResult Get() => Ok(); + + [HttpPost] + public IActionResult Post() => Ok(); + + [HttpPatch] + public IActionResult Patch() => Ok(); + + [HttpDelete] + public IActionResult Delete() => Ok(); + } + + [DisableRoutingConvention, Route("[controller]")] + [NoHttpPatch] + public class NoHttpPatchController : BaseJsonApiController + { + public NoHttpPatchController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + + [HttpGet] + public IActionResult Get() => Ok(); + + [HttpPost] + public IActionResult Post() => Ok(); + + [HttpPatch] + public IActionResult Patch() => Ok(); + + [HttpDelete] + public IActionResult Delete() => Ok(); + } + + [DisableRoutingConvention, Route("[controller]")] + [NoHttpDelete] + public class NoHttpDeleteController : BaseJsonApiController + { + public NoHttpDeleteController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + + [HttpGet] + public IActionResult Get() => Ok(); + + [HttpPost] + public IActionResult Post() => Ok(); + + [HttpPatch] + public IActionResult Patch() => Ok(); + + [HttpDelete] + public IActionResult Delete() => Ok(); + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TagsController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TagsController.cs new file mode 100644 index 0000000..16c958d --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TagsController.cs @@ -0,0 +1,20 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.Controllers.Annotations; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + [DisableQueryString("skipCache")] + public sealed class TagsController : JsonApiController + { + public TagsController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TestValuesController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TestValuesController.cs new file mode 100644 index 0000000..9bd4cec --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TestValuesController.cs @@ -0,0 +1,35 @@ +using Microsoft.AspNetCore.Mvc; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + [Route("[controller]")] + public class TestValuesController : ControllerBase + { + [HttpGet] + public IActionResult Get() + { + var result = new[] { "value" }; + return Ok(result); + } + + [HttpPost] + public IActionResult Post(string name) + { + var result = "Hello, " + name; + return Ok(result); + } + + [HttpPatch] + public IActionResult Patch(string name) + { + var result = "Hello, " + name; + return Ok(result); + } + + [HttpDelete] + public IActionResult Delete() + { + return Ok("Deleted"); + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/ThrowingResourcesController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/ThrowingResourcesController.cs new file mode 100644 index 0000000..2fcda52 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/ThrowingResourcesController.cs @@ -0,0 +1,18 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + public sealed class ThrowingResourcesController : JsonApiController + { + public ThrowingResourcesController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TodoCollectionsController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TodoCollectionsController.cs new file mode 100644 index 0000000..13804a9 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TodoCollectionsController.cs @@ -0,0 +1,37 @@ +using System.Threading; +using System.Threading.Tasks; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Services; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + public sealed class TodoCollectionsController : JsonApiController + { + + public TodoCollectionsController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { + } + + [HttpPatch("{id}")] + public override async Task PatchAsync(string id, [FromBody] TodoItemCollection resource, CancellationToken cancellationToken) + { + // if (resource.Name == "PRE-ATTACH-TEST") + // { + // var targetTodoId = resource.TodoItems.First().Id; + // var todoItemContext = _dbResolver.GetContext().Set(); + // await todoItemContext.Where(ti => ti.Id == targetTodoId).FirstOrDefaultAsync(cancellationToken); + // } + + return await base.PatchAsync(id, resource, cancellationToken); + } + + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TodoItemsController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TodoItemsController.cs new file mode 100644 index 0000000..a147a20 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TodoItemsController.cs @@ -0,0 +1,18 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + public sealed class TodoItemsController : JsonApiController + { + public TodoItemsController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TodoItemsCustomController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TodoItemsCustomController.cs new file mode 100644 index 0000000..36ad9c5 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TodoItemsCustomController.cs @@ -0,0 +1,149 @@ +using System.Net; +using System.Threading; +using System.Threading.Tasks; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers.Annotations; +using JsonApiDotNetCore.Errors; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Services; +using Microsoft.AspNetCore.Mvc; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + [ApiController] + [DisableRoutingConvention, Route("custom/route/todoItems")] + public class TodoItemsCustomController : CustomJsonApiController + { + public TodoItemsCustomController( + IJsonApiOptions options, + IResourceService resourceService) + : base(options, resourceService) + { } + } + + public class CustomJsonApiController + : CustomJsonApiController where T : class, IIdentifiable + { + public CustomJsonApiController( + IJsonApiOptions options, + IResourceService resourceService) + : base(options, resourceService) + { + } + } + + public class CustomJsonApiController + : ControllerBase where T : class, IIdentifiable + { + private readonly IJsonApiOptions _options; + private readonly IResourceService _resourceService; + + private IActionResult Forbidden() + { + return new StatusCodeResult((int)HttpStatusCode.Forbidden); + } + + public CustomJsonApiController( + IJsonApiOptions options, + IResourceService resourceService) + { + _options = options; + _resourceService = resourceService; + } + + public CustomJsonApiController( + IResourceService resourceService) + { + _resourceService = resourceService; + } + + [HttpGet] + public async Task GetAsync(CancellationToken cancellationToken) + { + var resources = await _resourceService.GetAsync(cancellationToken); + return Ok(resources); + } + + [HttpGet("{id}")] + public async Task GetAsync(TId id, CancellationToken cancellationToken) + { + try + { + var resource = await _resourceService.GetAsync(id, cancellationToken); + return Ok(resource); + } + catch (ResourceNotFoundException) + { + return NotFound(); + } + } + + [HttpGet("{id}/relationships/{relationshipName}")] + public async Task GetRelationshipsAsync(TId id, string relationshipName, CancellationToken cancellationToken) + { + try + { + var relationship = await _resourceService.GetRelationshipAsync(id, relationshipName, cancellationToken); + return Ok(relationship); + } + catch (ResourceNotFoundException) + { + return NotFound(); + } + } + + [HttpGet("{id}/{relationshipName}")] + public async Task GetRelationshipAsync(TId id, string relationshipName, CancellationToken cancellationToken) + { + var relationship = await _resourceService.GetSecondaryAsync(id, relationshipName, cancellationToken); + return Ok(relationship); + } + + [HttpPost] + public async Task PostAsync([FromBody] T resource, CancellationToken cancellationToken) + { + if (resource == null) + return UnprocessableEntity(); + + if (_options.AllowClientGeneratedIds && !string.IsNullOrEmpty(resource.StringId)) + return Forbidden(); + + resource = await _resourceService.CreateAsync(resource, cancellationToken); + + return Created($"{HttpContext.Request.Path}/{resource.Id}", resource); + } + + [HttpPatch("{id}")] + public async Task PatchAsync(TId id, [FromBody] T resource, CancellationToken cancellationToken) + { + if (resource == null) + return UnprocessableEntity(); + + try + { + var updated = await _resourceService.UpdateAsync(id, resource, cancellationToken); + return Ok(updated); + } + catch (ResourceNotFoundException) + { + return NotFound(); + } + } + + [HttpPatch("{id}/relationships/{relationshipName}")] + public async Task PatchRelationshipAsync(TId id, string relationshipName, [FromBody] object secondaryResourceIds, CancellationToken cancellationToken) + { + await _resourceService.SetRelationshipAsync(id, relationshipName, secondaryResourceIds, cancellationToken); + + return Ok(); + } + + [HttpDelete("{id}")] + public async Task DeleteAsync(TId id, CancellationToken cancellationToken) + { + await _resourceService.DeleteAsync(id, cancellationToken); + return NoContent(); + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TodoItemsTestController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TodoItemsTestController.cs new file mode 100644 index 0000000..518b34f --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/TodoItemsTestController.cs @@ -0,0 +1,110 @@ +using System.Collections.Generic; +using System.Net; +using System.Threading; +using System.Threading.Tasks; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.Controllers.Annotations; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Serialization.Objects; +using JsonApiDotNetCore.Services; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + public abstract class AbstractTodoItemsController + : BaseJsonApiController where T : class, IIdentifiable + { + protected AbstractTodoItemsController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService service) + : base(options, loggerFactory, service) + { } + } + + [DisableRoutingConvention] + [Route("/abstract")] + public class TodoItemsTestController : AbstractTodoItemsController + { + public TodoItemsTestController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService service) + : base(options, loggerFactory, service) + { } + + [HttpGet] + public override async Task GetAsync(CancellationToken cancellationToken) + { + return await base.GetAsync(cancellationToken); + } + + [HttpGet("{id}")] + public override async Task GetAsync(string id, CancellationToken cancellationToken) + { + return await base.GetAsync(id, cancellationToken); + } + + [HttpGet("{id}/{relationshipName}")] + public override async Task GetSecondaryAsync(string id, string relationshipName, CancellationToken cancellationToken) + { + return await base.GetSecondaryAsync(id, relationshipName, cancellationToken); + } + + [HttpGet("{id}/relationships/{relationshipName}")] + public override async Task GetRelationshipAsync(string id, string relationshipName, CancellationToken cancellationToken) + { + return await base.GetRelationshipAsync(id, relationshipName, cancellationToken); + } + + [HttpPost] + public override async Task PostAsync([FromBody] TodoItem resource, CancellationToken cancellationToken) + { + await Task.Yield(); + + return NotFound(new Error(HttpStatusCode.NotFound) + { + Title = "NotFound ActionResult with explicit error object." + }); + } + + [HttpPost("{id}/relationships/{relationshipName}")] + public override async Task PostRelationshipAsync( + string id, string relationshipName, [FromBody] ISet secondaryResourceIds, CancellationToken cancellationToken) + { + return await base.PostRelationshipAsync(id, relationshipName, secondaryResourceIds, cancellationToken); + } + + [HttpPatch("{id}")] + public override async Task PatchAsync(string id, [FromBody] TodoItem resource, CancellationToken cancellationToken) + { + await Task.Yield(); + + return Conflict("Something went wrong"); + } + + [HttpPatch("{id}/relationships/{relationshipName}")] + public override async Task PatchRelationshipAsync( + string id, string relationshipName, [FromBody] object secondaryResourceIds, CancellationToken cancellationToken) + { + return await base.PatchRelationshipAsync(id, relationshipName, secondaryResourceIds, cancellationToken); + } + + [HttpDelete("{id}")] + public override async Task DeleteAsync(string id, CancellationToken cancellationToken) + { + await Task.Yield(); + + return NotFound(); + } + + [HttpDelete("{id}/relationships/{relationshipName}")] + public override async Task DeleteRelationshipAsync(string id, string relationshipName, [FromBody] ISet secondaryResourceIds, CancellationToken cancellationToken) + { + return await base.DeleteRelationshipAsync(id, relationshipName, secondaryResourceIds, cancellationToken); + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Controllers/UsersController.cs b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/UsersController.cs new file mode 100644 index 0000000..78b962b --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Controllers/UsersController.cs @@ -0,0 +1,28 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Controllers +{ + public sealed class UsersController : JsonApiController + { + public UsersController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + } + + public sealed class SuperUsersController : JsonApiController + { + public SuperUsersController( + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Definitions/ArticleHooksDefinition.cs b/src/JsonApiDotNetCore.MongoDb.Example/Definitions/ArticleHooksDefinition.cs new file mode 100644 index 0000000..76b2a18 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Definitions/ArticleHooksDefinition.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; +using System.Linq; +using System.Net; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Errors; +using JsonApiDotNetCore.Hooks.Internal.Execution; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Serialization.Objects; + +namespace JsonApiDotNetCore.MongoDb.Example.Definitions +{ + public class ArticleHooksDefinition : ResourceHooksDefinition

+ { + public ArticleHooksDefinition(IResourceGraph resourceGraph) : base(resourceGraph) { } + + public override IEnumerable
OnReturn(HashSet
resources, ResourcePipeline pipeline) + { + if (pipeline == ResourcePipeline.GetSingle && resources.Any(r => r.Caption == "Classified")) + { + throw new JsonApiException(new Error(HttpStatusCode.Forbidden) + { + Title = "You are not allowed to see this article." + }); + } + + return resources.Where(t => t.Caption != "This should not be included"); + } + } +} + diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Definitions/LockableHooksDefinition.cs b/src/JsonApiDotNetCore.MongoDb.Example/Definitions/LockableHooksDefinition.cs new file mode 100644 index 0000000..662cf82 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Definitions/LockableHooksDefinition.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using System.Linq; +using System.Net; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Errors; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Serialization.Objects; + +namespace JsonApiDotNetCore.MongoDb.Example.Definitions +{ + public abstract class LockableHooksDefinition : ResourceHooksDefinition where T : class, IIsLockable, IIdentifiable + { + protected LockableHooksDefinition(IResourceGraph resourceGraph) : base(resourceGraph) { } + + protected void DisallowLocked(IEnumerable resources) + { + foreach (var e in resources ?? Enumerable.Empty()) + { + if (e.IsLocked) + { + throw new JsonApiException(new Error(HttpStatusCode.Forbidden) + { + Title = "You are not allowed to update fields or relationships of locked todo items." + }); + } + } + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Definitions/PassportHooksDefinition.cs b/src/JsonApiDotNetCore.MongoDb.Example/Definitions/PassportHooksDefinition.cs new file mode 100644 index 0000000..6318fbc --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Definitions/PassportHooksDefinition.cs @@ -0,0 +1,49 @@ +using System.Collections.Generic; +using System.Linq; +using System.Net; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Errors; +using JsonApiDotNetCore.Hooks.Internal.Execution; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Serialization.Objects; + +namespace JsonApiDotNetCore.MongoDb.Example.Definitions +{ + public class PassportHooksDefinition : ResourceHooksDefinition + { + public PassportHooksDefinition(IResourceGraph resourceGraph) : base(resourceGraph) + { + } + + public override void BeforeRead(ResourcePipeline pipeline, bool isIncluded = false, string stringId = null) + { + if (pipeline == ResourcePipeline.GetSingle && isIncluded) + { + throw new JsonApiException(new Error(HttpStatusCode.Forbidden) + { + Title = "You are not allowed to include passports on individual persons." + }); + } + } + + public override void BeforeImplicitUpdateRelationship(IRelationshipsDictionary resourcesByRelationship, ResourcePipeline pipeline) + { + resourcesByRelationship.GetByRelationship().ToList().ForEach(kvp => DoesNotTouchLockedPassports(kvp.Value)); + } + + private void DoesNotTouchLockedPassports(IEnumerable resources) + { + foreach (var passport in resources ?? Enumerable.Empty()) + { + if (passport.IsLocked) + { + throw new JsonApiException(new Error(HttpStatusCode.Forbidden) + { + Title = "You are not allowed to update fields or relationships of locked persons." + }); + } + } + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Definitions/PersonHooksDefinition.cs b/src/JsonApiDotNetCore.MongoDb.Example/Definitions/PersonHooksDefinition.cs new file mode 100644 index 0000000..c2b618b --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Definitions/PersonHooksDefinition.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using System.Linq; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Hooks.Internal.Execution; +using JsonApiDotNetCore.MongoDb.Example.Models; + +namespace JsonApiDotNetCore.MongoDb.Example.Definitions +{ + public class PersonHooksDefinition : LockableHooksDefinition + { + public PersonHooksDefinition(IResourceGraph resourceGraph) : base(resourceGraph) { } + + public override IEnumerable BeforeUpdateRelationship(HashSet ids, IRelationshipsDictionary resourcesByRelationship, ResourcePipeline pipeline) + { + BeforeImplicitUpdateRelationship(resourcesByRelationship, pipeline); + return ids; + } + + public override void BeforeImplicitUpdateRelationship(IRelationshipsDictionary resourcesByRelationship, ResourcePipeline pipeline) + { + resourcesByRelationship.GetByRelationship().ToList().ForEach(kvp => DisallowLocked(kvp.Value)); + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Definitions/TagHooksDefinition.cs b/src/JsonApiDotNetCore.MongoDb.Example/Definitions/TagHooksDefinition.cs new file mode 100644 index 0000000..3742c70 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Definitions/TagHooksDefinition.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using System.Linq; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Hooks.Internal.Execution; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Resources; + +namespace JsonApiDotNetCore.MongoDb.Example.Definitions +{ + public class TagHooksDefinition : ResourceHooksDefinition + { + public TagHooksDefinition(IResourceGraph resourceGraph) : base(resourceGraph) { } + + public override IEnumerable BeforeCreate(IResourceHashSet affected, ResourcePipeline pipeline) + { + return base.BeforeCreate(affected, pipeline); + } + + public override IEnumerable OnReturn(HashSet resources, ResourcePipeline pipeline) + { + return resources.Where(t => t.Name != "This should not be included"); + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Definitions/TodoHooksDefinition.cs b/src/JsonApiDotNetCore.MongoDb.Example/Definitions/TodoHooksDefinition.cs new file mode 100644 index 0000000..b1ccad4 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Definitions/TodoHooksDefinition.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using System.Linq; +using System.Net; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Errors; +using JsonApiDotNetCore.Hooks.Internal.Execution; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Serialization.Objects; + +namespace JsonApiDotNetCore.MongoDb.Example.Definitions +{ + public class TodoHooksDefinition : LockableHooksDefinition + { + public TodoHooksDefinition(IResourceGraph resourceGraph) : base(resourceGraph) { } + + public override void BeforeRead(ResourcePipeline pipeline, bool isIncluded = false, string stringId = null) + { + if (stringId == "1337") + { + throw new JsonApiException(new Error(HttpStatusCode.Forbidden) + { + Title = "You are not allowed to update the author of todo items." + }); + } + } + + public override void BeforeImplicitUpdateRelationship(IRelationshipsDictionary resourcesByRelationship, ResourcePipeline pipeline) + { + List todos = resourcesByRelationship.GetByRelationship().SelectMany(kvp => kvp.Value).ToList(); + DisallowLocked(todos); + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Definitions/TodoItemDefinition.cs b/src/JsonApiDotNetCore.MongoDb.Example/Definitions/TodoItemDefinition.cs new file mode 100644 index 0000000..c5b9706 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Definitions/TodoItemDefinition.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Resources; + +namespace JsonApiDotNetCore.MongoDb.Example.Definitions +{ + public sealed class TodoItemDefinition : JsonApiResourceDefinition + { + public TodoItemDefinition(IResourceGraph resourceGraph) : base(resourceGraph) + { + } + + public override IDictionary GetMeta(TodoItem resource) + { + if (resource.Description != null && resource.Description.StartsWith("Important:")) + { + return new Dictionary + { + ["hasHighPriority"] = true + }; + } + + return base.GetMeta(resource); + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Dockerfile b/src/JsonApiDotNetCore.MongoDb.Example/Dockerfile new file mode 100644 index 0000000..c5a5d90 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Dockerfile @@ -0,0 +1,13 @@ +FROM microsoft/dotnet:latest + +COPY . /app + +WORKDIR /app + +RUN ["dotnet", "restore"] + +RUN ["dotnet", "build"] + +EXPOSE 14140/tcp + +CMD ["dotnet", "run", "--server.urls", "http://*:14140"] diff --git a/src/Example/Example.csproj b/src/JsonApiDotNetCore.MongoDb.Example/JsonApiDotNetCore.MongoDb.Example.csproj similarity index 100% rename from src/Example/Example.csproj rename to src/JsonApiDotNetCore.MongoDb.Example/JsonApiDotNetCore.MongoDb.Example.csproj diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/Address.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/Address.cs new file mode 100644 index 0000000..686e488 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/Address.cs @@ -0,0 +1,27 @@ +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public sealed class Address : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string Street { get; set; } + + [Attr] + public string ZipCode { get; set; } + + [HasOne] + public Country Country { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/Article.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/Article.cs new file mode 100644 index 0000000..525ccad --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/Article.cs @@ -0,0 +1,44 @@ +using System.Collections.Generic; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public sealed class Article : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string Caption { get; set; } + + [Attr] + public string Url { get; set; } + + // [HasOne] + // public Author Author { get; set; } + // + // [BsonIgnore] + // [HasManyThrough(nameof(ArticleTags))] + // public ISet Tags { get; set; } + // public ISet ArticleTags { get; set; } + // + // [BsonIgnore] + // [HasManyThrough(nameof(IdentifiableArticleTags))] + // public ICollection IdentifiableTags { get; set; } + // public ICollection IdentifiableArticleTags { get; set; } + // + // [HasMany] + // public ICollection Revisions { get; set; } + // + // [HasOne] + // public Blog Blog { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/ArticleTag.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/ArticleTag.cs new file mode 100644 index 0000000..6593c3e --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/ArticleTag.cs @@ -0,0 +1,11 @@ +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public sealed class ArticleTag + { + public int ArticleId { get; set; } + public Article Article { get; set; } + + public int TagId { get; set; } + public Tag Tag { get; set; } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/Author.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/Author.cs new file mode 100644 index 0000000..651dd2e --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/Author.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public sealed class Author : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string FirstName { get; set; } + + [Attr] + public string LastName { get; set; } + + [Attr] + public DateTime? DateOfBirth { get; set; } + + [Attr] + public string BusinessEmail { get; set; } + + // [HasOne] + // public Address LivingAddress { get; set; } + // + // [HasMany] + // public IList
Articles { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/Blog.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/Blog.cs new file mode 100644 index 0000000..9f80e75 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/Blog.cs @@ -0,0 +1,30 @@ +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public sealed class Blog : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string Title { get; set; } + + [Attr] + public string CompanyName { get; set; } + + // [HasMany] + // public IList
Articles { get; set; } + + // [HasOne] + // public Author Owner { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.IntegrationTests/Models/Book.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/Country.cs similarity index 59% rename from test/JsonApiDotNetCore.MongoDb.IntegrationTests/Models/Book.cs rename to src/JsonApiDotNetCore.MongoDb.Example/Models/Country.cs index 15a90d9..28e83d7 100644 --- a/test/JsonApiDotNetCore.MongoDb.IntegrationTests/Models/Book.cs +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/Country.cs @@ -3,26 +3,17 @@ using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; -namespace JsonApiDotNetCore.MongoDb.IntegrationTests.Models +namespace JsonApiDotNetCore.MongoDb.Example.Models { - public sealed class Book : IIdentifiable + public class Country : IIdentifiable { [BsonId] [BsonRepresentation(BsonType.ObjectId)] [Attr] public string Id { get; set; } - + [Attr] public string Name { get; set; } - - [Attr] - public decimal Price { get; set; } - - [Attr] - public string Category { get; set; } - - [Attr] - public string Author { get; set; } [BsonIgnore] public string StringId { get => Id; set => Id = value; } diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/Gender.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/Gender.cs new file mode 100644 index 0000000..c8545b9 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/Gender.cs @@ -0,0 +1,9 @@ +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public enum Gender + { + Unknown, + Male, + Female + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/IIsLockable.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/IIsLockable.cs new file mode 100644 index 0000000..35f8c4e --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/IIsLockable.cs @@ -0,0 +1,7 @@ +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public interface IIsLockable + { + bool IsLocked { get; set; } + } +} \ No newline at end of file diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/IdentifiableArticleTag.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/IdentifiableArticleTag.cs new file mode 100644 index 0000000..d4304d0 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/IdentifiableArticleTag.cs @@ -0,0 +1,28 @@ +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public class IdentifiableArticleTag : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + public int ArticleId { get; set; } + [HasOne] + public Article Article { get; set; } + + public int TagId { get; set; } + [HasOne] + public Tag Tag { get; set; } + + public string SomeMetaData { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/KebabCasedModel.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/KebabCasedModel.cs new file mode 100644 index 0000000..a72c7b1 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/KebabCasedModel.cs @@ -0,0 +1,21 @@ +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public class KebabCasedModel : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string CompoundAttr { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/Passport.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/Passport.cs new file mode 100644 index 0000000..e16fe40 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/Passport.cs @@ -0,0 +1,65 @@ +using System; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public class Passport : IIdentifiable + { + // private readonly ISystemClock _systemClock; + private int? _socialSecurityNumber; + + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public int? SocialSecurityNumber + { + get => _socialSecurityNumber; + set + { + if (value != _socialSecurityNumber) + { + LastSocialSecurityNumberChange = DateTime.UtcNow.ToLocalTime(); + _socialSecurityNumber = value; + } + } + } + + [Attr] + public DateTime LastSocialSecurityNumberChange { get; set; } + + [Attr] + public bool IsLocked { get; set; } + + // [HasOne] + // public Person Person { get; set; } + + // [Attr] + // [NotMapped] + // public string BirthCountryName + // { + // get => BirthCountry?.Name; + // set + // { + // BirthCountry ??= new Country(); + // BirthCountry.Name = value; + // } + // } + + // [EagerLoad] + // public Country BirthCountry { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + + // public Passport(AppDbContext appDbContext) + // { + // _systemClock = appDbContext.SystemClock; + // } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/Person.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/Person.cs new file mode 100644 index 0000000..ae66ab6 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/Person.cs @@ -0,0 +1,90 @@ +using System.Linq; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public sealed class PersonRole : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [HasOne] + public Person Person { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } + + public sealed class Person : IIdentifiable, IIsLockable + { + private string _firstName; + + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + public bool IsLocked { get; set; } + + [Attr] + public string FirstName + { + get => _firstName; + set + { + if (value != _firstName) + { + _firstName = value; + Initials = string.Concat(value.Split(' ').Select(x => char.ToUpperInvariant(x[0]))); + } + } + } + + [Attr] + public string Initials { get; set; } + + [Attr] + public string LastName { get; set; } + + [Attr(PublicName = "the-Age")] + public int Age { get; set; } + + [Attr] + public Gender Gender { get; set; } + + [Attr] + public string Category { get; set; } + + // [HasMany] + // public ISet TodoItems { get; set; } + // + // [HasMany] + // public ISet AssignedTodoItems { get; set; } + // + // [HasMany] + // public HashSet TodoCollections { get; set; } + // + // [HasOne] + // public PersonRole Role { get; set; } + // + // [HasOne] + // public TodoItem OneToOneTodoItem { get; set; } + // + // [HasOne] + // public TodoItem StakeHolderTodoItem { get; set; } + // + // [HasOne(Links = LinkTypes.All, CanInclude = false)] + // public TodoItem UnIncludeableItem { get; set; } + // + // [HasOne] + // public Passport Passport { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/Revision.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/Revision.cs new file mode 100644 index 0000000..ad5d763 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/Revision.cs @@ -0,0 +1,28 @@ +using System; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public sealed class Revision : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public DateTime PublishTime { get; set; } + + [HasOne] + public Author Author { get; set; } + + [HasOne] + public Article Article { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/Tag.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/Tag.cs new file mode 100644 index 0000000..be3c99b --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/Tag.cs @@ -0,0 +1,29 @@ +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public class Tag : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string Name { get; set; } + + [Attr] + public TagColor Color { get; set; } + + // [NotMapped] + // [HasManyThrough(nameof(ArticleTags))] + // public ISet
Articles { get; set; } + // public ISet ArticleTags { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/TagColor.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/TagColor.cs new file mode 100644 index 0000000..bab8ade --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/TagColor.cs @@ -0,0 +1,9 @@ +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public enum TagColor + { + Red, + Green, + Blue + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/ThrowingResource.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/ThrowingResource.cs new file mode 100644 index 0000000..1af8d68 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/ThrowingResource.cs @@ -0,0 +1,40 @@ +using System; +using System.Diagnostics; +using System.Linq; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using JsonApiDotNetCore.Serialization; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public sealed class ThrowingResource : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string FailsOnSerialize + { + get + { + var isSerializingResponse = new StackTrace().GetFrames() + .Any(frame => frame.GetMethod().DeclaringType == typeof(JsonApiWriter)); + + if (isSerializingResponse) + { + throw new InvalidOperationException($"The value for the '{nameof(FailsOnSerialize)}' property is currently unavailable."); + } + + return string.Empty; + } + set { } + } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/TodoItem.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/TodoItem.cs new file mode 100644 index 0000000..5ed4ba6 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/TodoItem.cs @@ -0,0 +1,72 @@ +using System; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public class TodoItem : IIdentifiable, IIsLockable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + public bool IsLocked { get; set; } + + [Attr] + public string Description { get; set; } + + [Attr] + public long Ordinal { get; set; } + + [Attr(Capabilities = AttrCapabilities.All & ~AttrCapabilities.AllowCreate)] + public string AlwaysChangingValue + { + get => Guid.NewGuid().ToString(); + set { } + } + + [Attr] + public DateTime CreatedDate { get; set; } + + [Attr(Capabilities = AttrCapabilities.All & ~(AttrCapabilities.AllowFilter | AttrCapabilities.AllowSort))] + public DateTime? AchievedDate { get; set; } + + [Attr(Capabilities = AttrCapabilities.All & ~(AttrCapabilities.AllowCreate | AttrCapabilities.AllowChange))] + public string CalculatedValue => "calculated"; + + [Attr(Capabilities = AttrCapabilities.All & ~AttrCapabilities.AllowChange)] + public DateTimeOffset? OffsetDate { get; set; } + + // [HasOne] + // public Person Owner { get; set; } + // + // [HasOne] + // public Person Assignee { get; set; } + // + // [HasOne] + // public Person OneToOnePerson { get; set; } + // + // [HasMany] + // public ISet StakeHolders { get; set; } + // + // [HasOne] + // public TodoItemCollection Collection { get; set; } + // + // // cyclical to-one structure + // [HasOne] + // public TodoItem DependentOnTodo { get; set; } + // + // // cyclical to-many structure + // [HasOne] + // public TodoItem ParentTodo { get; set; } + // + // [HasMany] + // public IList ChildrenTodos { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/TodoItemCollection.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/TodoItemCollection.cs new file mode 100644 index 0000000..9300816 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/TodoItemCollection.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + [Resource("todoCollections")] + public sealed class TodoItemCollection : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string Name { get; set; } + + // [HasMany] + // public ISet TodoItems { get; set; } + // + // [HasOne] + // public Person Owner { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Models/User.cs b/src/JsonApiDotNetCore.MongoDb.Example/Models/User.cs new file mode 100644 index 0000000..412d415 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Models/User.cs @@ -0,0 +1,54 @@ +using System; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Models +{ + public class User : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + // private readonly ISystemClock _systemClock; + private string _password; + + [Attr] public string UserName { get; set; } + + [Attr(Capabilities = AttrCapabilities.AllowCreate | AttrCapabilities.AllowChange)] + public string Password + { + get => _password; + set + { + if (value != _password) + { + _password = value; + LastPasswordChange = DateTime.UtcNow.ToLocalTime(); + } + } + } + + [Attr] public DateTime LastPasswordChange { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + + // public User(AppDbContext appDbContext) + // { + // _systemClock = appDbContext.SystemClock; + // } + } + + public sealed class SuperUser : User + { + [Attr] public int SecurityLevel { get; set; } + + // public SuperUser(AppDbContext appDbContext) : base(appDbContext) + // { + // } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Program.cs b/src/JsonApiDotNetCore.MongoDb.Example/Program.cs new file mode 100644 index 0000000..d718b50 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Program.cs @@ -0,0 +1,20 @@ +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; + +namespace JsonApiDotNetCore.MongoDb.Example +{ + public class Program + { + public static void Main(string[] args) + { + CreateHostBuilder(args).Build().Run(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }); + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Properties/launchSettings.json b/src/JsonApiDotNetCore.MongoDb.Example/Properties/launchSettings.json new file mode 100644 index 0000000..1e3998e --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Properties/launchSettings.json @@ -0,0 +1,30 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:14140", + "sslPort": 44340 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": false, + "launchUrl": "api/v1/todoItems", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Kestrel": { + "commandName": "Project", + "launchBrowser": false, + "launchUrl": "api/v1/todoItems", + "applicationUrl": "https://localhost:44340;http://localhost:14140", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Services/CustomArticleService.cs b/src/JsonApiDotNetCore.MongoDb.Example/Services/CustomArticleService.cs new file mode 100644 index 0000000..4f1eed2 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Services/CustomArticleService.cs @@ -0,0 +1,37 @@ +using System.Threading; +using System.Threading.Tasks; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Hooks; +using JsonApiDotNetCore.Middleware; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.Queries; +using JsonApiDotNetCore.Repositories; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Services +{ + public class CustomArticleService : JsonApiResourceService + { + public CustomArticleService( + IResourceRepositoryAccessor repositoryAccessor, + IQueryLayerComposer queryLayerComposer, + IPaginationContext paginationContext, + IJsonApiOptions options, + ILoggerFactory loggerFactory, + IJsonApiRequest request, + IResourceChangeTracker
resourceChangeTracker, + IResourceHookExecutorFacade hookExecutor) + : base(repositoryAccessor, queryLayerComposer, paginationContext, options, loggerFactory, request, + resourceChangeTracker, hookExecutor) + { } + + public override async Task
GetAsync(string id, CancellationToken cancellationToken) + { + var resource = await base.GetAsync(id, cancellationToken); + resource.Caption = "None for you Glen Coco"; + return resource; + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Services/SkipCacheQueryStringParameterReader.cs b/src/JsonApiDotNetCore.MongoDb.Example/Services/SkipCacheQueryStringParameterReader.cs new file mode 100644 index 0000000..8af3c32 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Services/SkipCacheQueryStringParameterReader.cs @@ -0,0 +1,36 @@ +using System.Linq; +using JsonApiDotNetCore.Controllers.Annotations; +using JsonApiDotNetCore.Errors; +using JsonApiDotNetCore.QueryStrings; +using Microsoft.Extensions.Primitives; + +namespace JsonApiDotNetCore.MongoDb.Example.Services +{ + public class SkipCacheQueryStringParameterReader : IQueryStringParameterReader + { + private const string _skipCacheParameterName = "skipCache"; + + public bool SkipCache { get; private set; } + + public bool IsEnabled(DisableQueryStringAttribute disableQueryStringAttribute) + { + return !disableQueryStringAttribute.ParameterNames.Contains(_skipCacheParameterName); + } + + public bool CanRead(string parameterName) + { + return parameterName == _skipCacheParameterName; + } + + public void Read(string parameterName, StringValues parameterValue) + { + if (!bool.TryParse(parameterValue, out bool skipCache)) + { + throw new InvalidQueryStringParameterException(parameterName, "Boolean value required.", + $"The value {parameterValue} is not a valid boolean."); + } + + SkipCache = skipCache; + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Startups/EmptyStartup.cs b/src/JsonApiDotNetCore.MongoDb.Example/Startups/EmptyStartup.cs new file mode 100644 index 0000000..2ff1251 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Startups/EmptyStartup.cs @@ -0,0 +1,26 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace JsonApiDotNetCore.MongoDb.Example +{ + /// + /// Empty startup class, required for integration tests. + /// Changes in ASP.NET Core 3 no longer allow Startup class to be defined in test projects. See https://github.com/aspnet/AspNetCore/issues/15373. + /// + public abstract class EmptyStartup + { + protected EmptyStartup(IConfiguration configuration) + { + } + + public virtual void ConfigureServices(IServiceCollection services) + { + } + + public virtual void Configure(IApplicationBuilder app, IWebHostEnvironment environment) + { + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Startups/Startup.cs b/src/JsonApiDotNetCore.MongoDb.Example/Startups/Startup.cs new file mode 100644 index 0000000..a2d7854 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Startups/Startup.cs @@ -0,0 +1,107 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.MongoDb; +using JsonApiDotNetCore.MongoDb.Example.Models; +using JsonApiDotNetCore.MongoDb.Example.Services; +using JsonApiDotNetCore.QueryStrings; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +using MongoDB.Driver; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace JsonApiDotNetCore.MongoDb.Example +{ + public class Startup : EmptyStartup + { + private IConfiguration Configuration { get; } + + public Startup(IConfiguration configuration) : base(configuration) + { + Configuration = configuration; + } + + public override void ConfigureServices(IServiceCollection services) + { + ConfigureClock(services); + + services.AddScoped(); + services.AddScoped(sp => sp.GetRequiredService()); + + // TryAddSingleton will only register the IMongoDatabase if there is no + // previously registered instance - will make tests use individual dbs + services.TryAddSingleton(sp => + { + var client = new MongoClient(Configuration.GetSection("DatabaseSettings:ConnectionString").Value); + return client.GetDatabase(Configuration.GetSection("DatabaseSettings:Database").Value); + }); + + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + + + services.AddJsonApi( + ConfigureJsonApiOptions, + resources: builder => + { + builder.Add(); + builder.Add(); + builder.Add(); + builder.Add(); + builder.Add(); + builder.Add(); + builder.Add(); + builder.Add(); + builder.Add(); + builder.Add(); + builder.Add(); + builder.Add(); + builder.Add(); + builder.Add(); + builder.Add(); + }); + + // once all tests have been moved to WebApplicationFactory format we can get rid of this line below + services.AddClientSerialization(); + } + + private void ConfigureClock(IServiceCollection services) + { + services.AddSingleton(); + } + + protected virtual void ConfigureJsonApiOptions(JsonApiOptions options) + { + options.IncludeExceptionStackTraceInErrors = true; + options.Namespace = "api/v1"; + options.DefaultPageSize = new PageSize(5); + options.IncludeTotalResourceCount = true; + options.ValidateModelState = true; + options.SerializerSettings.Formatting = Formatting.Indented; + options.SerializerSettings.Converters.Add(new StringEnumConverter()); + } + + public override void Configure(IApplicationBuilder app, IWebHostEnvironment environment) + { + app.UseRouting(); + app.UseJsonApi(); + app.UseEndpoints(endpoints => endpoints.MapControllers()); + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/Startups/TestStartup.cs b/src/JsonApiDotNetCore.MongoDb.Example/Startups/TestStartup.cs new file mode 100644 index 0000000..cf99c40 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/Startups/TestStartup.cs @@ -0,0 +1,26 @@ +using JsonApiDotNetCore.Configuration; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace JsonApiDotNetCore.MongoDb.Example +{ + public class TestStartup : EmptyStartup + { + public TestStartup(IConfiguration configuration) : base(configuration) + { + } + + public override void ConfigureServices(IServiceCollection services) + { + } + + public override void Configure(IApplicationBuilder app, IWebHostEnvironment environment) + { + app.UseRouting(); + app.UseJsonApi(); + app.UseEndpoints(endpoints => endpoints.MapControllers()); + } + } +} diff --git a/src/JsonApiDotNetCore.MongoDb.Example/appsettings.json b/src/JsonApiDotNetCore.MongoDb.Example/appsettings.json new file mode 100644 index 0000000..ff9ab4c --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.Example/appsettings.json @@ -0,0 +1,14 @@ +{ + "DatabaseSettings": { + "ConnectionString": "mongodb://localhost:27017", + "Database": "JsonApiDotNetCoreExample" + }, + "Logging": { + "LogLevel": { + "Default": "Warning", + "Microsoft": "Warning", + "Microsoft.EntityFrameworkCore.Database.Command": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/src/Example/Controllers/BooksController.cs b/src/JsonApiDotNetCore.MongoDb.GettingStarted/Controllers/BooksController.cs similarity index 79% rename from src/Example/Controllers/BooksController.cs rename to src/JsonApiDotNetCore.MongoDb.GettingStarted/Controllers/BooksController.cs index 5a78d91..e80e46a 100644 --- a/src/Example/Controllers/BooksController.cs +++ b/src/JsonApiDotNetCore.MongoDb.GettingStarted/Controllers/BooksController.cs @@ -1,10 +1,10 @@ -using Example.Models; using JsonApiDotNetCore.Configuration; using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.MongoDb.GettingStarted.Models; using JsonApiDotNetCore.Services; using Microsoft.Extensions.Logging; -namespace Example.Controllers +namespace JsonApiDotNetCore.MongoDb.GettingStarted.Controllers { public sealed class BooksController : JsonApiController { diff --git a/src/JsonApiDotNetCore.MongoDb.GettingStarted/JsonApiDotNetCore.MongoDb.GettingStarted.csproj b/src/JsonApiDotNetCore.MongoDb.GettingStarted/JsonApiDotNetCore.MongoDb.GettingStarted.csproj new file mode 100644 index 0000000..68f4699 --- /dev/null +++ b/src/JsonApiDotNetCore.MongoDb.GettingStarted/JsonApiDotNetCore.MongoDb.GettingStarted.csproj @@ -0,0 +1,14 @@ + + + $(NetCoreAppVersion) + + + + + + + + + + + diff --git a/src/Example/Models/Book.cs b/src/JsonApiDotNetCore.MongoDb.GettingStarted/Models/Book.cs similarity index 92% rename from src/Example/Models/Book.cs rename to src/JsonApiDotNetCore.MongoDb.GettingStarted/Models/Book.cs index 022cf17..89d7a74 100644 --- a/src/Example/Models/Book.cs +++ b/src/JsonApiDotNetCore.MongoDb.GettingStarted/Models/Book.cs @@ -3,7 +3,7 @@ using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; -namespace Example.Models +namespace JsonApiDotNetCore.MongoDb.GettingStarted.Models { public sealed class Book : IIdentifiable { diff --git a/src/Example/Program.cs b/src/JsonApiDotNetCore.MongoDb.GettingStarted/Program.cs similarity index 90% rename from src/Example/Program.cs rename to src/JsonApiDotNetCore.MongoDb.GettingStarted/Program.cs index 1a94e50..87d567e 100644 --- a/src/Example/Program.cs +++ b/src/JsonApiDotNetCore.MongoDb.GettingStarted/Program.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; -namespace Example +namespace JsonApiDotNetCore.MongoDb.GettingStarted { public class Program { diff --git a/src/Example/Properties/launchSettings.json b/src/JsonApiDotNetCore.MongoDb.GettingStarted/Properties/launchSettings.json similarity index 96% rename from src/Example/Properties/launchSettings.json rename to src/JsonApiDotNetCore.MongoDb.GettingStarted/Properties/launchSettings.json index 4a6248f..e360e7a 100644 --- a/src/Example/Properties/launchSettings.json +++ b/src/JsonApiDotNetCore.MongoDb.GettingStarted/Properties/launchSettings.json @@ -9,7 +9,7 @@ } }, "profiles": { - "Test": { + "Kestrel": { "commandName": "Project", "launchBrowser": false, "launchUrl": "api/books", @@ -20,4 +20,4 @@ } } } - \ No newline at end of file + diff --git a/src/Example/README.md b/src/JsonApiDotNetCore.MongoDb.GettingStarted/README.md similarity index 87% rename from src/Example/README.md rename to src/JsonApiDotNetCore.MongoDb.GettingStarted/README.md index d79afbd..833ce87 100644 --- a/src/Example/README.md +++ b/src/JsonApiDotNetCore.MongoDb.GettingStarted/README.md @@ -11,4 +11,4 @@ For further documentation and implementation of a JsonApiDotnetCore Application Repository: https://github.com/json-api-dotnet/JsonApiDotNetCore -Documentation: https://json-api-dotnet.github.io/ +Documentation: http://www.jsonapi.net diff --git a/src/Example/Startup.cs b/src/JsonApiDotNetCore.MongoDb.GettingStarted/Startup.cs similarity index 82% rename from src/Example/Startup.cs rename to src/JsonApiDotNetCore.MongoDb.GettingStarted/Startup.cs index d3a2b96..908bd90 100644 --- a/src/Example/Startup.cs +++ b/src/JsonApiDotNetCore.MongoDb.GettingStarted/Startup.cs @@ -1,15 +1,13 @@ -using Example.Models; using JsonApiDotNetCore.Configuration; using JsonApiDotNetCore.MongoDb; -using JsonApiDotNetCore.Repositories; +using JsonApiDotNetCore.MongoDb.GettingStarted.Models; using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using MongoDB.Driver; using Newtonsoft.Json; -namespace Example +namespace JsonApiDotNetCore.MongoDb.GettingStarted { public sealed class Startup { @@ -29,7 +27,7 @@ public void ConfigureServices(IServiceCollection services) return client.GetDatabase(Configuration.GetSection("DatabaseSettings:Database").Value); }); - services.AddScoped, MongoEntityRepository>(); + services.AddResourceRepository>(); services.AddJsonApi(options => { options.Namespace = "api"; @@ -43,7 +41,7 @@ public void ConfigureServices(IServiceCollection services) } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + public void Configure(IApplicationBuilder app) { app.UseHttpsRedirection(); app.UseRouting(); diff --git a/src/Example/appsettings.json b/src/JsonApiDotNetCore.MongoDb.GettingStarted/appsettings.json similarity index 100% rename from src/Example/appsettings.json rename to src/JsonApiDotNetCore.MongoDb.GettingStarted/appsettings.json diff --git a/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj b/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj index 13281f3..5c843db 100644 --- a/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj +++ b/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj @@ -7,9 +7,9 @@ - jsonapi;json:api;dotnet;core;mongodb + jsonapi;json:api;dotnet;core;MongoDB Persistence layer implementation for use of mongodb in applications using JsonApiDotNetCore - https://github.com/mrnkr/JsonApiDotNetCore.MongoDb + https://github.com/json-api-dotnet/JsonApiDotNetCore.MongoDb MIT false true diff --git a/src/JsonApiDotNetCore.MongoDb/MongoEntityRepository.cs b/src/JsonApiDotNetCore.MongoDb/MongoEntityRepository.cs index 2c23f5f..f49f2ad 100644 --- a/src/JsonApiDotNetCore.MongoDb/MongoEntityRepository.cs +++ b/src/JsonApiDotNetCore.MongoDb/MongoEntityRepository.cs @@ -1,17 +1,19 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using System.Threading.Tasks; using JsonApiDotNetCore.Configuration; using JsonApiDotNetCore.MongoDb.Extensions; -using JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding; +using JsonApiDotNetCore.Queries.Internal.QueryableBuilding; using JsonApiDotNetCore.Repositories; using JsonApiDotNetCore.Resources; using MongoDB.Driver; using MongoDB.Driver.Linq; using JsonApiDotNetCore.Queries; using JsonApiDotNetCore.Queries.Expressions; -using JsonApiDotNetCore.Resources.Annotations; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Infrastructure; namespace JsonApiDotNetCore.MongoDb { @@ -21,74 +23,160 @@ public class MongoEntityRepository { private readonly IMongoDatabase _db; private readonly ITargetedFields _targetedFields; - private readonly IResourceGraph _resourceGraph; + private readonly IResourceContextProvider _resourceContextProvider; private readonly IResourceFactory _resourceFactory; - private readonly IEnumerable _constraintProviders; - + public MongoEntityRepository( IMongoDatabase db, ITargetedFields targetedFields, - IResourceGraph resourceGraph, - IResourceFactory resourceFactory, - IEnumerable constraintProviders) + IResourceContextProvider resourceContextProvider, + IResourceFactory resourceFactory) { _db = db; _targetedFields = targetedFields; - _resourceGraph = resourceGraph; + _resourceContextProvider = resourceContextProvider; _resourceFactory = resourceFactory; - _constraintProviders = constraintProviders; } private IMongoCollection Collection => _db.GetCollection(typeof(TResource).Name); private IMongoQueryable Entities => Collection.AsQueryable(); - public virtual Task CountAsync(FilterExpression topFilter) + public virtual async Task> GetAsync(QueryLayer layer, CancellationToken cancellationToken) => + await ApplyQueryLayer(layer).ToListAsync(); + + public virtual Task CountAsync(FilterExpression topFilter, CancellationToken cancellationToken) { - var resourceContext = _resourceGraph.GetResourceContext(); + var resourceContext = _resourceContextProvider.GetResourceContext(); var layer = new QueryLayer(resourceContext) { Filter = topFilter }; var query = ApplyQueryLayer(layer); - return query.CountAsync(); + return query.CountAsync(cancellationToken); } - public virtual Task CreateAsync(TResource resource) => - Collection.InsertOneAsync(resource); - - public virtual async Task DeleteAsync(TId id) + public virtual Task GetForCreateAsync(TId id, CancellationToken cancellationToken) { - var result = await Collection.DeleteOneAsync(Builders.Filter.Eq(e => e.Id, id)); - return result.IsAcknowledged && result.DeletedCount > 0; + var resource = _resourceFactory.CreateInstance(); + resource.Id = id; + + return Task.FromResult(resource); } - public virtual void FlushFromCache(TResource resource) => - throw new NotImplementedException(); + public virtual Task CreateAsync(TResource resourceFromRequest, TResource resourceForDatabase, + CancellationToken cancellationToken) + { + if (resourceFromRequest == null) throw new ArgumentNullException(nameof(resourceFromRequest)); + if (resourceForDatabase == null) throw new ArgumentNullException(nameof(resourceForDatabase)); + + foreach (var attribute in _targetedFields.Attributes) + { + attribute.SetValue(resourceForDatabase, attribute.GetValue(resourceFromRequest)); + } - public virtual async Task> GetAsync(QueryLayer layer) => - await ApplyQueryLayer(layer).ToListAsync(); + return Collection.InsertOneAsync(resourceForDatabase, new InsertOneOptions(), cancellationToken); + } - public virtual async Task UpdateAsync(TResource requestResource, TResource databaseResource) + public virtual async Task GetForUpdateAsync(QueryLayer queryLayer, CancellationToken cancellationToken) + { + var resources = await GetAsync(queryLayer, cancellationToken); + return resources.FirstOrDefault(); + } + + public virtual async Task UpdateAsync(TResource requestResource, TResource databaseResource, CancellationToken cancellationToken) { foreach (var attr in _targetedFields.Attributes) attr.SetValue(databaseResource, attr.GetValue(requestResource)); - await Collection.ReplaceOneAsync(Builders.Filter.Eq(e => e.Id, databaseResource.Id), databaseResource); + await Collection.ReplaceOneAsync( + Builders.Filter.Eq(e => e.Id, databaseResource.Id), + databaseResource, + new ReplaceOptions(), + cancellationToken); + } + + public virtual async Task DeleteAsync(TId id, CancellationToken cancellationToken) + { + var result = await Collection.DeleteOneAsync( + Builders.Filter.Eq(e => e.Id, id), + new DeleteOptions(), + cancellationToken); + + if (!result.IsAcknowledged || result.DeletedCount == 0) + { + throw new DataStoreUpdateException(new Exception()); + } + } + + public virtual Task SetRelationshipAsync(TResource primaryResource, object secondaryResourceIds, CancellationToken cancellationToken) + { + throw new NotImplementedException(); + } + + public virtual Task AddToToManyRelationshipAsync(TId primaryId, ISet secondaryResourceIds, CancellationToken cancellationToken) + { + throw new NotImplementedException(); } - public virtual Task UpdateRelationshipAsync(object parent, RelationshipAttribute relationship, IReadOnlyCollection relationshipIds) => + public virtual Task RemoveFromToManyRelationshipAsync(TResource primaryResource, ISet secondaryResourceIds, + CancellationToken cancellationToken) + { throw new NotImplementedException(); + } protected virtual IMongoQueryable ApplyQueryLayer(QueryLayer layer) { var source = Entities; - var nameFactory = new JsonApiDotNetCore.Queries.Internal.QueryableBuilding.LambdaParameterNameFactory(); - var builder = new QueryableBuilder(source.Expression, source.ElementType, typeof(Queryable), nameFactory, _resourceFactory, _resourceGraph); + var nameFactory = new LambdaParameterNameFactory(); + var builder = new QueryableBuilder( + source.Expression, + source.ElementType, + typeof(Queryable), + nameFactory, + _resourceFactory, + _resourceContextProvider, + DummyModel.Instance); var expression = builder.ApplyQuery(layer); return (IMongoQueryable)source.Provider.CreateQuery(expression); } } + + internal sealed class DummyModel : IModel + { + public static IModel Instance { get; } = new DummyModel(); + + private DummyModel() + { + } + + public IAnnotation FindAnnotation(string name) + { + throw new NotImplementedException(); + } + + public IEnumerable GetAnnotations() + { + throw new NotImplementedException(); + } + + public object this[string name] => throw new NotImplementedException(); + + public IEnumerable GetEntityTypes() + { + throw new NotImplementedException(); + } + + public IEntityType FindEntityType(string name) + { + throw new NotImplementedException(); + } + + public IEntityType FindEntityType(string name, string definingNavigationName, IEntityType definingEntityType) + { + throw new NotImplementedException(); + } + } } diff --git a/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs b/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs deleted file mode 100644 index 0b70588..0000000 --- a/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System; -using System.Linq.Expressions; -using JsonApiDotNetCore.Configuration; -using JsonApiDotNetCore.Queries; -using JsonApiDotNetCore.Queries.Expressions; -using JsonApiDotNetCore.Queries.Internal.QueryableBuilding; -using JsonApiDotNetCore.Resources; - -namespace JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding -{ - /// - /// Drives conversion from into system trees. - /// - public sealed class QueryableBuilder - { - private readonly Expression _source; - private readonly Type _elementType; - private readonly Type _extensionType; - private readonly LambdaParameterNameFactory _nameFactory; - private readonly IResourceFactory _resourceFactory; - private readonly IResourceContextProvider _resourceContextProvider; - private readonly LambdaScopeFactory _lambdaScopeFactory; - - public QueryableBuilder(Expression source, Type elementType, Type extensionType, LambdaParameterNameFactory nameFactory, - IResourceFactory resourceFactory, IResourceContextProvider resourceContextProvider, - LambdaScopeFactory lambdaScopeFactory = null) - { - _source = source ?? throw new ArgumentNullException(nameof(source)); - _elementType = elementType ?? throw new ArgumentNullException(nameof(elementType)); - _extensionType = extensionType ?? throw new ArgumentNullException(nameof(extensionType)); - _nameFactory = nameFactory ?? throw new ArgumentNullException(nameof(nameFactory)); - _resourceFactory = resourceFactory ?? throw new ArgumentNullException(nameof(resourceFactory)); - _resourceContextProvider = resourceContextProvider ?? throw new ArgumentNullException(nameof(resourceContextProvider)); - _lambdaScopeFactory = lambdaScopeFactory ?? new LambdaScopeFactory(_nameFactory); - } - - public Expression ApplyQuery(QueryLayer layer) - { - var expression = _source; - - if (layer.Filter != null) - { - expression = ApplyFilter(expression, layer.Filter); - } - - if (layer.Sort != null) - { - expression = ApplySort(expression, layer.Sort); - } - - if (layer.Pagination != null) - { - expression = ApplyPagination(expression, layer.Pagination); - } - - return expression; - } - - private Expression ApplyFilter(Expression source, FilterExpression filter) - { - using var lambdaScope = _lambdaScopeFactory.CreateScope(_elementType); - - var builder = new WhereClauseBuilder(source, lambdaScope, _extensionType); - return builder.ApplyWhere(filter); - } - - private Expression ApplySort(Expression source, SortExpression sort) - { - using var lambdaScope = _lambdaScopeFactory.CreateScope(_elementType); - - var builder = new OrderClauseBuilder(source, lambdaScope, _extensionType); - return builder.ApplyOrderBy(sort); - } - - private Expression ApplyPagination(Expression source, PaginationExpression pagination) - { - using var lambdaScope = _lambdaScopeFactory.CreateScope(_elementType); - - var builder = new SkipTakeClauseBuilder(source, lambdaScope, _extensionType); - return builder.ApplySkipTake(pagination); - } - } -} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/Factories/IntegrationTestWebApplicationFactory.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/Factories/IntegrationTestWebApplicationFactory.cs deleted file mode 100644 index b0f4109..0000000 --- a/test/JsonApiDotNetCore.MongoDb.Example.Tests/Factories/IntegrationTestWebApplicationFactory.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc.Testing; -using Microsoft.AspNetCore.TestHost; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; - -namespace JsonApiDotNetCore.MongoDb.Example.Tests.Factories -{ - internal sealed class IntegrationTestWebApplicationFactory : WebApplicationFactory - where TStartup : class - { - private Action _beforeServicesConfiguration; - private Action _afterServicesConfiguration; - - public void ConfigureServicesBeforeStartup(Action servicesConfiguration) - { - _beforeServicesConfiguration = servicesConfiguration; - } - - public void ConfigureServicesAfterStartup(Action servicesConfiguration) - { - _afterServicesConfiguration = servicesConfiguration; - } - - protected override IHostBuilder CreateHostBuilder() - { - return Host.CreateDefaultBuilder(null) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.ConfigureTestServices(services => - { - _beforeServicesConfiguration?.Invoke(services); - }); - - webBuilder.UseStartup(); - - webBuilder.ConfigureTestServices(services => - { - _afterServicesConfiguration?.Invoke(services); - }); - }); - } - } -} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/Helpers/Extensions/StringExtensions.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/Helpers/Extensions/StringExtensions.cs new file mode 100644 index 0000000..6ff22de --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/Helpers/Extensions/StringExtensions.cs @@ -0,0 +1,10 @@ +namespace JsonApiDotNetCore.MongoDb.Example.Tests.Helpers.Extensions +{ + public static class StringExtensions + { + public static string NormalizeLineEndings(this string text) + { + return text.Replace("\r\n", "\n").Replace("\r", "\n"); + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/Helpers/Models/TodoItemClient.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/Helpers/Models/TodoItemClient.cs new file mode 100644 index 0000000..b7e5123 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/Helpers/Models/TodoItemClient.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using JsonApiDotNetCore.MongoDb.Example.Models; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.Helpers.Models +{ + /// + /// this "client" version of the is required because the + /// base property that is overridden here does not have a setter. For a model + /// defined on a JSON:API client, it would not make sense to have an exposed attribute + /// without a setter. + /// + public class TodoItemClient : TodoItem + { + [Attr] + public new string CalculatedValue { get; set; } + } + + [Resource("todoCollections")] + public sealed class TodoItemCollectionClient : Identifiable + { + [Attr] + public string Name { get; set; } + public int OwnerId { get; set; } + + [HasMany] + public ISet TodoItems { get; set; } + + [HasOne] + public Person Owner { get; set; } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/HttpResponseMessageExtensions.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/HttpResponseMessageExtensions.cs new file mode 100644 index 0000000..14aa16d --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/HttpResponseMessageExtensions.cs @@ -0,0 +1,59 @@ +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using FluentAssertions; +using FluentAssertions.Primitives; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests +{ + public static class HttpResponseMessageExtensions + { + public static HttpResponseMessageAssertions Should(this HttpResponseMessage instance) + { + return new HttpResponseMessageAssertions(instance); + } + + public sealed class HttpResponseMessageAssertions + : ReferenceTypeAssertions + { + protected override string Identifier => "response"; + + public HttpResponseMessageAssertions(HttpResponseMessage instance) + { + Subject = instance; + } + + public AndConstraint HaveStatusCode(HttpStatusCode statusCode) + { + if (Subject.StatusCode != statusCode) + { + string responseText = GetFormattedContentAsync(Subject).Result; + Subject.StatusCode.Should().Be(statusCode, "response body returned was:\n" + responseText); + } + + return new AndConstraint(this); + } + + private static async Task GetFormattedContentAsync(HttpResponseMessage responseMessage) + { + string text = await responseMessage.Content.ReadAsStringAsync(); + + try + { + if (text.Length > 0) + { + return JsonConvert.DeserializeObject(text).ToString(); + } + } + catch + { + // ignored + } + + return text; + } + } + } +} \ No newline at end of file diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTestContext.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTestContext.cs index 2e3aafd..3841a4c 100644 --- a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTestContext.cs +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTestContext.cs @@ -2,46 +2,71 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; -using Example; +using JsonApiDotNetCore.Configuration; using JsonApiDotNetCore.Middleware; -using JsonApiDotNetCore.MongoDb.Example.Tests.Factories; +using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Testing; +using Microsoft.AspNetCore.TestHost; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Mongo2Go; using MongoDB.Driver; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; namespace JsonApiDotNetCore.MongoDb.Example.Tests { public sealed class IntegrationTestContext : IDisposable where TStartup : class { - private readonly Lazy> _lazyFactory; + private readonly Lazy> _lazyFactory; private Action _beforeServicesConfiguration; private Action _afterServicesConfiguration; + private Action _registerResources; + private readonly MongoDbRunner _runner; - private WebApplicationFactory Factory => _lazyFactory.Value; + public WebApplicationFactory Factory => _lazyFactory.Value; public IntegrationTestContext() { - _lazyFactory = new Lazy>(CreateFactory); + _lazyFactory = new Lazy>(CreateFactory); + _runner = MongoDbRunner.Start(); } - private WebApplicationFactory CreateFactory() + private WebApplicationFactory CreateFactory() { - var factory = new IntegrationTestWebApplicationFactory(); + var factory = new IntegrationTestWebApplicationFactory(); - factory.ConfigureServicesBeforeStartup(_beforeServicesConfiguration); - - factory.ConfigureServicesAfterStartup(services => + factory.ConfigureServicesBeforeStartup(services => { - _afterServicesConfiguration?.Invoke(services); + _beforeServicesConfiguration?.Invoke(services); + + services.AddSingleton(sp => + { + var client = new MongoClient(_runner.ConnectionString); + return client.GetDatabase($"JsonApiDotNetCore_MongoDb_{new Random().Next()}_Test"); + }); + + services.AddJsonApi( + options => + { + options.IncludeExceptionStackTraceInErrors = true; + options.SerializerSettings.Formatting = Formatting.Indented; + options.SerializerSettings.Converters.Add(new StringEnumConverter()); + }, resources: _registerResources); }); + factory.ConfigureServicesAfterStartup(_afterServicesConfiguration); + return factory; } - public void Dispose() => Factory.Dispose(); + public void Dispose() + { + _runner.Dispose(); + Factory.Dispose(); + } public void ConfigureServicesBeforeStartup(Action servicesConfiguration) => _beforeServicesConfiguration = servicesConfiguration; @@ -49,6 +74,9 @@ public void ConfigureServicesBeforeStartup(Action servicesCo public void ConfigureServicesAfterStartup(Action servicesConfiguration) => _afterServicesConfiguration = servicesConfiguration; + public void RegisterResources(Action resources) => + _registerResources = resources; + public async Task RunOnDatabaseAsync(Func asyncAction) { using var scope = Factory.Services.CreateScope(); @@ -110,5 +138,40 @@ private TResponseDocument DeserializeResponse(string response throw new FormatException($"Failed to deserialize response body to JSON:\n{responseText}", exception); } } + + private sealed class IntegrationTestWebApplicationFactory : WebApplicationFactory + { + private Action _beforeServicesConfiguration; + private Action _afterServicesConfiguration; + + public void ConfigureServicesBeforeStartup(Action servicesConfiguration) + { + _beforeServicesConfiguration = servicesConfiguration; + } + + public void ConfigureServicesAfterStartup(Action servicesConfiguration) + { + _afterServicesConfiguration = servicesConfiguration; + } + + protected override IHostBuilder CreateHostBuilder() + { + return Host.CreateDefaultBuilder(null) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.ConfigureTestServices(services => + { + _beforeServicesConfiguration?.Invoke(services); + }); + + webBuilder.UseStartup(); + + webBuilder.ConfigureTestServices(services => + { + _afterServicesConfiguration?.Invoke(services); + }); + }); + } + } } } diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/CreatingResourcesTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/CreatingResourcesTests.cs deleted file mode 100644 index 6326cf1..0000000 --- a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/CreatingResourcesTests.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System.Net; -using System.Threading.Tasks; -using Bogus; -using Example; -using Example.Models; -using JsonApiDotNetCore.Serialization.Objects; -using Microsoft.Extensions.DependencyInjection; -using MongoDB.Driver; -using Xunit; - -namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests -{ - public sealed class CreatingResourcesTests : IClassFixture>, IAsyncLifetime - { - private readonly IntegrationTestContext _testContext; - private readonly Faker _bookFaker; - - private string _createdBookId; - - public CreatingResourcesTests(IntegrationTestContext testContext) - { - _testContext = testContext; - _bookFaker = new Faker() - .RuleFor(b => b.Name, f => f.Lorem.Sentence()) - .RuleFor(b => b.Author, f => f.Name.FindName()) - .RuleFor(b => b.Category, f => f.Commerce.ProductAdjective()) - .RuleFor(b => b.Price, f => f.Random.Decimal(1.00M, 50.00M)); - - _testContext.ConfigureServicesAfterStartup(services => - { - services.AddSingleton(sp => - { - var client = new MongoClient("mongodb://localhost:27017"); - return client.GetDatabase("JsonApiDotNetCore_MongoDb_Resource_Creation_Tests"); - }); - }); - } - - public Task InitializeAsync() => Task.CompletedTask; - - public Task DisposeAsync() => _testContext.RunOnDatabaseAsync(db => db.DropCollectionAsync(nameof(Book))); - - [Fact] - public async Task ShouldCreateResource() - { - var route = "/api/Books"; - var book = _bookFaker.Generate(); - var resource = new - { - data = new - { - type = "books", - attributes = new - { - name = book.Name, - price = book.Price, - category = book.Category, - author = book.Author - } - } - }; - - var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, resource); - _createdBookId = responseDocument.Data is ResourceObject resourceObject ? resourceObject.Id : null; - - Assert.Equal(HttpStatusCode.Created, httpResponse.StatusCode); - } - } -} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/DeletingResourcesTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/DeletingResourcesTests.cs deleted file mode 100644 index 3a4ecce..0000000 --- a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/DeletingResourcesTests.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System.Net; -using System.Threading.Tasks; -using Bogus; -using Example; -using Example.Models; -using JsonApiDotNetCore.Serialization.Objects; -using Microsoft.Extensions.DependencyInjection; -using MongoDB.Driver; -using Xunit; - -namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests -{ - public sealed class DeletingResourcesTests : IClassFixture>, IAsyncLifetime - { - private readonly IntegrationTestContext _testContext; - private readonly Faker _bookFaker; - - public DeletingResourcesTests(IntegrationTestContext testContext) - { - _testContext = testContext; - _bookFaker = new Faker() - .RuleFor(b => b.Name, f => f.Lorem.Sentence()) - .RuleFor(b => b.Author, f => f.Name.FindName()) - .RuleFor(b => b.Category, f => f.Commerce.ProductAdjective()) - .RuleFor(b => b.Price, f => f.Random.Decimal(1.00M, 50.00M)); - - _testContext.ConfigureServicesAfterStartup(services => - { - services.AddSingleton(sp => - { - var client = new MongoClient("mongodb://localhost:27017"); - return client.GetDatabase("JsonApiDotNetCore_MongoDb_Resource_Deletion_Tests"); - }); - }); - } - - public Task InitializeAsync() => Task.CompletedTask; - - public Task DisposeAsync() => _testContext.RunOnDatabaseAsync(db => db.DropCollectionAsync(nameof(Book))); - - [Fact] - public async Task ShouldDeleteCreatedResource() - { - var deleteStatusCode = HttpStatusCode.InternalServerError; - - var book = _bookFaker.Generate(); - var resource = new - { - data = new - { - type = "books", - attributes = new - { - name = book.Name, - price = book.Price, - category = book.Category, - author = book.Author - } - } - }; - - var (_, responseDocument) = await _testContext.ExecutePostAsync("/api/Books", resource); - - if (responseDocument.Data is ResourceObject resourceObject) - { - var (httpResponse, _) = await _testContext.ExecuteDeleteAsync($"/api/Books/{resourceObject.Id}"); - deleteStatusCode = httpResponse.StatusCode; - } - - Assert.Equal(HttpStatusCode.NoContent, deleteStatusCode); - } - - [Fact] - public async Task ShouldReturnNotFound() - { - var (httpResponse, _) = await _testContext.ExecuteDeleteAsync($"/api/Books/5fa6eff63d1508a204d1b161"); - Assert.Equal(HttpStatusCode.NotFound, httpResponse.StatusCode); - } - } -} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/FakerContainer.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/FakerContainer.cs new file mode 100644 index 0000000..049bac2 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/FakerContainer.cs @@ -0,0 +1,73 @@ +using System; +using System.Diagnostics; +using System.Linq; +using System.Reflection; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests +{ + internal abstract class FakerContainer + { + protected static int GetFakerSeed() + { + // The goal here is to have stable data over multiple test runs, but at the same time different data per test case. + + MethodBase testMethod = GetTestMethod(); + var testName = testMethod.DeclaringType?.FullName + "." + testMethod.Name; + + return GetDeterministicHashCode(testName); + } + + private static MethodBase GetTestMethod() + { + var stackTrace = new StackTrace(); + + var testMethod = stackTrace.GetFrames() + .Select(stackFrame => stackFrame?.GetMethod()) + .FirstOrDefault(IsTestMethod); + + if (testMethod == null) + { + // If called after the first await statement, the test method is no longer on the stack, + // but has been replaced with the compiler-generated async/wait state machine. + throw new InvalidOperationException("Fakers can only be used from within (the start of) a test method."); + } + + return testMethod; + } + + private static bool IsTestMethod(MethodBase method) + { + if (method == null) + { + return false; + } + + return method.GetCustomAttribute(typeof(FactAttribute)) != null || method.GetCustomAttribute(typeof(TheoryAttribute)) != null; + } + + private static int GetDeterministicHashCode(string source) + { + // https://andrewlock.net/why-is-string-gethashcode-different-each-time-i-run-my-program-in-net-core/ + unchecked + { + int hash1 = (5381 << 16) + 5381; + int hash2 = hash1; + + for (int i = 0; i < source.Length; i += 2) + { + hash1 = ((hash1 << 5) + hash1) ^ source[i]; + + if (i == source.Length - 1) + { + break; + } + + hash2 = ((hash2 << 5) + hash2) ^ source[i + 1]; + } + + return hash1 + hash2 * 1566083941; + } + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/FetchingResourcesTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/FetchingResourcesTests.cs deleted file mode 100644 index b383111..0000000 --- a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/FetchingResourcesTests.cs +++ /dev/null @@ -1,160 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Threading.Tasks; -using Bogus; -using Example; -using Example.Models; -using Humanizer; -using JsonApiDotNetCore.Serialization.Objects; -using Microsoft.Extensions.DependencyInjection; -using MongoDB.Driver; -using Xunit; - -namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests -{ - public sealed class FetchingResourcesTests : IClassFixture>, IAsyncLifetime - { - private readonly Faker _bookFaker; - - private readonly IntegrationTestContext _testContext; - private readonly IEnumerable _books; - - public FetchingResourcesTests(IntegrationTestContext testContext) - { - _testContext = testContext; - - _bookFaker = new Faker() - .RuleFor(b => b.Name, f => f.Lorem.Sentence()) - .RuleFor(b => b.Author, f => f.Name.FindName()) - .RuleFor(b => b.Category, f => f.Commerce.ProductAdjective()) - .RuleFor(b => b.Price, f => f.Random.Decimal(1.00M, 50.00M)); - - _books = GenerateBooks().ToList(); - - _testContext.ConfigureServicesAfterStartup(services => - { - services.AddSingleton(sp => - { - var client = new MongoClient("mongodb://localhost:27017"); - return client.GetDatabase("JsonApiDotNetCore_MongoDb_Example_Tests"); - }); - }); - } - - private IEnumerable GenerateBooks() - { - for (var i = 0; i < 30; i++) - { - yield return _bookFaker.Generate(); - } - } - - public Task InitializeAsync() => _testContext.RunOnDatabaseAsync( - db => db.GetCollection(nameof(Book)) - .InsertManyAsync(_books)); - - public Task DisposeAsync() => _testContext.RunOnDatabaseAsync(db => db.DropCollectionAsync(nameof(Book))); - - [Fact] - public async Task ShouldGetAllResources() - { - var route = "/api/Books"; - var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); - - var expected = _books - .Select(b => b.StringId) - .ToArray(); - var actual = responseDocument.ManyData?.Select(x => x.Id).ToArray(); - - Assert.Equal(HttpStatusCode.OK, httpResponse.StatusCode); - Assert.Equal(expected.Length, (Int64)responseDocument.Meta["totalResources"]); - Assert.Equal(expected.Take(10).ToArray(), actual); - } - - [Theory] - [InlineData("12.99")] - [InlineData("23.45")] - [InlineData("12.00")] - public async Task ShouldGetBooksWithPriceEqualTo(string priceStr) - { - var price = Convert.ToDecimal(priceStr); - var route = $"/api/Books?filter=equals(price,'{price}')"; - var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); - - var expected = _books - .Where(b => b.Price == price) - .Take(10) - .Select(b => b.StringId) - .ToArray(); - var actual = responseDocument.ManyData?.Select(x => x.Id).ToArray(); - - Assert.Equal(HttpStatusCode.OK, httpResponse.StatusCode); - Assert.Equal(expected.Length, (Int64)responseDocument.Meta["totalResources"]); - Assert.Equal(expected, actual); - } - - [Theory] - [InlineData("12.99", "29.34")] - [InlineData("23.45", "47.22")] - [InlineData("2.00", "11.32")] - public async Task ShouldGetBooksWithPriceBetween(string minPriceStr, string maxPriceStr) - { - var minPrice = Convert.ToDecimal(minPriceStr); - var maxPrice = Convert.ToDecimal(maxPriceStr); - - var route = $"/api/Books?filter=and(greaterOrEqual(price,'{minPrice}'),lessOrEqual(price,'{maxPrice}'))"; - var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); - - var expected = _books - .Where(b => b.Price >= minPrice && b.Price <= maxPrice) - .Select(b => b.StringId) - .ToArray(); - var actual = responseDocument.ManyData?.Select(x => x.Id).ToArray(); - - Assert.Equal(HttpStatusCode.OK, httpResponse.StatusCode); - Assert.Equal(expected.Length, (Int64)responseDocument.Meta["totalResources"]); - Assert.Equal(expected.Take(10).ToArray(), actual); - } - - [Theory] - [InlineData(3, 4)] - [InlineData(10, 2)] - [InlineData(20, 1)] - public async Task ShouldPaginate(int pageSize, int pageNumber) - { - var route = $"/api/Books?page[size]={pageSize}&page[number]={pageNumber}"; - var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); - - var expected = _books - .Skip((pageNumber - 1) * pageSize) - .Take(pageSize) - .Select(b => b.StringId) - .ToArray(); - var actual = responseDocument.ManyData?.Select(x => x.Id).ToArray(); - - Assert.Equal(HttpStatusCode.OK, httpResponse.StatusCode); - Assert.Equal(expected, actual); - } - - [Theory] - [InlineData("name")] - [InlineData("price")] - public async Task ShouldSortByField(string field) - { - var route = $"/api/Books?sort={field}"; - var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); - - var expected = _books - .OrderBy(b => b.GetType().GetProperty(field.Pascalize())?.GetValue(b)) - .Take(10) - .Select(b => b.StringId) - .ToArray(); - var actual = responseDocument.ManyData.Select(x => x.Id).ToArray(); - - Assert.Equal(HttpStatusCode.OK, httpResponse.StatusCode); - Assert.Equal(expected, actual); - } - } -} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterDataTypeTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterDataTypeTests.cs new file mode 100644 index 0000000..b244796 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterDataTypeTests.cs @@ -0,0 +1,338 @@ +using System; +using System.Net; +using System.Threading.Tasks; +using FluentAssertions; +using FluentAssertions.Extensions; +using Humanizer; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Serialization.Objects; +using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; +using Newtonsoft.Json; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.Filtering +{ + public sealed class FilterDataTypeTests : IClassFixture> + { + private readonly IntegrationTestContext _testContext; + + public FilterDataTypeTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + _testContext.RegisterResources(builder => + { + builder.Add(); + }); + + _testContext.ConfigureServicesAfterStartup(services => + { + services.AddResourceRepository>(); + }); + + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.EnableLegacyFilterNotation = false; + options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc; + } + + [Theory] + [InlineData(nameof(FilterableResource.SomeString), "text")] + [InlineData(nameof(FilterableResource.SomeBoolean), true)] + [InlineData(nameof(FilterableResource.SomeNullableBoolean), true)] + [InlineData(nameof(FilterableResource.SomeInt32), 1)] + [InlineData(nameof(FilterableResource.SomeNullableInt32), 1)] + [InlineData(nameof(FilterableResource.SomeUnsignedInt64), 1ul)] + [InlineData(nameof(FilterableResource.SomeNullableUnsignedInt64), 1ul)] + [InlineData(nameof(FilterableResource.SomeDouble), 0.5d)] + [InlineData(nameof(FilterableResource.SomeNullableDouble), 0.5d)] + [InlineData(nameof(FilterableResource.SomeEnum), DayOfWeek.Saturday)] + [InlineData(nameof(FilterableResource.SomeNullableEnum), DayOfWeek.Saturday)] + public async Task Can_filter_equality_on_type(string propertyName, object value) + { + // Arrange + var resource = new FilterableResource(); + var property = typeof(FilterableResource).GetProperty(propertyName); + property?.SetValue(resource, value); + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] {resource, new FilterableResource()}); + }); + + var attributeName = propertyName.Camelize(); + var route = $"/filterableResources?filter=equals({attributeName},'{value}')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes[attributeName].Should().Be(value is Enum ? value.ToString() : value); + } + + [Fact] + public async Task Can_filter_equality_on_type_Decimal() + { + // Arrange + var resource = new FilterableResource {SomeDecimal = 0.5m}; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] { resource, new FilterableResource() }); + }); + + var route = $"/filterableResources?filter=equals(someDecimal,'{resource.SomeDecimal}')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes["someDecimal"].Should().Be(resource.SomeDecimal); + } + + [Fact] + public async Task Can_filter_equality_on_type_Guid() + { + // Arrange + var resource = new FilterableResource {SomeGuid = Guid.NewGuid()}; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] { resource, new FilterableResource() }); + }); + + var route = $"/filterableResources?filter=equals(someGuid,'{resource.SomeGuid}')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes["someGuid"].Should().Be(resource.SomeGuid.ToString()); + } + + [Fact] + public async Task Can_filter_equality_on_type_DateTime() + { + // Arrange + var resource = new FilterableResource {SomeDateTime = 27.January(2003).At(11, 22, 33, 44).AsUtc()}; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] { resource, new FilterableResource() }); + }); + + var route = $"/filterableResources?filter=equals(someDateTime,'{resource.SomeDateTime:O}')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes["someDateTime"].Should().Be(resource.SomeDateTime); + } + + [Fact] + public async Task Can_filter_equality_on_type_DateTimeOffset() + { + // Arrange + var resource = new FilterableResource + { + SomeDateTimeOffset = new DateTimeOffset(27.January(2003).At(11, 22, 33, 44), TimeSpan.FromHours(3)) + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] { resource, new FilterableResource() }); + }); + + var route = $"/filterableResources?filter=equals(someDateTimeOffset,'{WebUtility.UrlEncode(resource.SomeDateTimeOffset.ToString("O"))}')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes["someDateTimeOffset"].Should().Be(resource.SomeDateTimeOffset.LocalDateTime); + } + + [Fact] + public async Task Can_filter_equality_on_type_TimeSpan() + { + // Arrange + var resource = new FilterableResource {SomeTimeSpan = new TimeSpan(1, 2, 3, 4, 5)}; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] { resource, new FilterableResource() }); + }); + + var route = $"/filterableResources?filter=equals(someTimeSpan,'{resource.SomeTimeSpan}')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes["someTimeSpan"].Should().Be(resource.SomeTimeSpan.ToString()); + } + + [Fact] + public async Task Cannot_filter_equality_on_incompatible_value() + { + // Arrange + var resource = new FilterableResource {SomeInt32 = 1}; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] { resource, new FilterableResource() }); + }); + + var route = "/filterableResources?filter=equals(someInt32,'ABC')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("Query creation failed due to incompatible types."); + responseDocument.Errors[0].Detail.Should().Be("Failed to convert 'ABC' of type 'String' to type 'Int32'."); + responseDocument.Errors[0].Source.Parameter.Should().BeNull(); + } + + [Theory] + [InlineData(nameof(FilterableResource.SomeString))] + [InlineData(nameof(FilterableResource.SomeNullableBoolean))] + [InlineData(nameof(FilterableResource.SomeNullableInt32))] + [InlineData(nameof(FilterableResource.SomeNullableUnsignedInt64))] + [InlineData(nameof(FilterableResource.SomeNullableDecimal))] + [InlineData(nameof(FilterableResource.SomeNullableDouble))] + [InlineData(nameof(FilterableResource.SomeNullableGuid))] + [InlineData(nameof(FilterableResource.SomeNullableDateTime))] + [InlineData(nameof(FilterableResource.SomeNullableDateTimeOffset))] + [InlineData(nameof(FilterableResource.SomeNullableTimeSpan))] + [InlineData(nameof(FilterableResource.SomeNullableEnum))] + public async Task Can_filter_is_null_on_type(string propertyName) + { + // Arrange + var resource = new FilterableResource(); + var property = typeof(FilterableResource).GetProperty(propertyName); + property?.SetValue(resource, null); + + var otherResource = new FilterableResource + { + SomeString = "X", + SomeNullableBoolean = true, + SomeNullableInt32 = 1, + SomeNullableUnsignedInt64 = 1, + SomeNullableDecimal = 1, + SomeNullableDouble = 1, + SomeNullableGuid = Guid.NewGuid(), + SomeNullableDateTime = 1.January(2001), + SomeNullableDateTimeOffset = 1.January(2001), + SomeNullableTimeSpan = TimeSpan.FromHours(1), + SomeNullableEnum = DayOfWeek.Friday + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] { resource, otherResource }); + }); + + var attributeName = propertyName.Camelize(); + var route = $"/filterableResources?filter=equals({attributeName},null)"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes[attributeName].Should().Be(null); + } + + [Theory] + [InlineData(nameof(FilterableResource.SomeString))] + [InlineData(nameof(FilterableResource.SomeNullableBoolean))] + [InlineData(nameof(FilterableResource.SomeNullableInt32))] + [InlineData(nameof(FilterableResource.SomeNullableUnsignedInt64))] + [InlineData(nameof(FilterableResource.SomeNullableDecimal))] + [InlineData(nameof(FilterableResource.SomeNullableDouble))] + [InlineData(nameof(FilterableResource.SomeNullableGuid))] + [InlineData(nameof(FilterableResource.SomeNullableDateTime))] + [InlineData(nameof(FilterableResource.SomeNullableDateTimeOffset))] + [InlineData(nameof(FilterableResource.SomeNullableTimeSpan))] + [InlineData(nameof(FilterableResource.SomeNullableEnum))] + public async Task Can_filter_is_not_null_on_type(string propertyName) + { + // Arrange + var resource = new FilterableResource + { + SomeString = "X", + SomeNullableBoolean = true, + SomeNullableInt32 = 1, + SomeNullableUnsignedInt64 = 1, + SomeNullableDecimal = 1, + SomeNullableDouble = 1, + SomeNullableGuid = Guid.NewGuid(), + SomeNullableDateTime = 1.January(2001), + SomeNullableDateTimeOffset = 1.January(2001), + SomeNullableTimeSpan = TimeSpan.FromHours(1), + SomeNullableEnum = DayOfWeek.Friday + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] { resource, new FilterableResource() }); + }); + + var attributeName = propertyName.Camelize(); + var route = $"/filterableResources?filter=not(equals({attributeName},null))"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes[attributeName].Should().NotBe(null); + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterDepthTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterDepthTests.cs new file mode 100644 index 0000000..cd718d7 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterDepthTests.cs @@ -0,0 +1,651 @@ +using System.Collections.Generic; +using System.Net; +using System.Threading.Tasks; +using FluentAssertions; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Serialization.Objects; +using JsonApiDotNetCore.MongoDb.Example.Models; +using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.Filtering +{ + public sealed class FilterDepthTests : IClassFixture> + { + private readonly IntegrationTestContext _testContext; + + public FilterDepthTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.EnableLegacyFilterNotation = false; + + // options.DisableTopPagination = false; + // options.DisableChildrenPagination = false; + } + + [Fact] + public async Task Can_filter_in_primary_resources() + { + // Arrange + var articles = new List
+ { + new Article + { + Caption = "One" + }, + new Article + { + Caption = "Two" + } + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection
(nameof(Article)); + await collection.DeleteManyAsync(Builders
.Filter.Empty); + await collection.InsertManyAsync(articles); + }); + + var route = "/api/v1/articles?filter=equals(caption,'Two')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Id.Should().Be(articles[1].StringId); + } + + [Fact] + public async Task Cannot_filter_in_single_primary_resource() + { + // Arrange + var article = new Article + { + Caption = "X" + }; + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection
(nameof(Article)).InsertOneAsync(article)); + + var route = $"/api/v1/articles/{article.StringId}?filter=equals(caption,'Two')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("The specified filter is invalid."); + responseDocument.Errors[0].Detail.Should().Be("This query string parameter can only be used on a collection of resources (not on a single resource)."); + responseDocument.Errors[0].Source.Parameter.Should().Be("filter"); + } + + // [Fact] + // public async Task Can_filter_in_secondary_resources() + // { + // // Arrange + // var blog = new Blog + // { + // Articles = new List
+ // { + // new Article + // { + // Caption = "One" + // }, + // new Article + // { + // Caption = "Two" + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/blogs/{blog.StringId}/articles?filter=equals(caption,'Two')"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Id.Should().Be(blog.Articles[1].StringId); + // } + + // [Fact] + // public async Task Cannot_filter_in_single_secondary_resource() + // { + // // Arrange + // var article = new Article + // { + // Caption = "X" + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Articles.Add(article); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/articles/{article.StringId}/author?filter=equals(lastName,'Smith')"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + // + // responseDocument.Errors.Should().HaveCount(1); + // responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + // responseDocument.Errors[0].Title.Should().Be("The specified filter is invalid."); + // responseDocument.Errors[0].Detail.Should().Be("This query string parameter can only be used on a collection of resources (not on a single resource)."); + // responseDocument.Errors[0].Source.Parameter.Should().Be("filter"); + // } + + // [Fact] + // public async Task Can_filter_on_HasOne_relationship() + // { + // // Arrange + // var articles = new List
+ // { + // new Article + // { + // Caption = "X", + // Author = new Author + // { + // LastName = "Conner" + // } + // }, + // new Article + // { + // Caption = "X", + // Author = new Author + // { + // LastName = "Smith" + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync
(); + // dbContext.Articles.AddRange(articles); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/api/v1/articles?include=author&filter=equals(author.lastName,'Smith')"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.Included.Should().HaveCount(1); + // + // responseDocument.Included[0].Id.Should().Be(articles[1].Author.StringId); + // } + + // [Fact] + // public async Task Can_filter_on_HasMany_relationship() + // { + // // Arrange + // var blogs = new List + // { + // new Blog(), + // new Blog + // { + // Articles = new List
+ // { + // new Article + // { + // Caption = "X" + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync(); + // dbContext.Blogs.AddRange(blogs); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/api/v1/blogs?filter=greaterThan(count(articles),'0')"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Id.Should().Be(blogs[1].StringId); + // } + // + // [Fact] + // public async Task Can_filter_on_HasManyThrough_relationship() + // { + // // Arrange + // var articles = new List
+ // { + // new Article + // { + // Caption = "X" + // }, + // new Article + // { + // Caption = "X", + // ArticleTags = new HashSet + // { + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "Hot" + // } + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync
(); + // dbContext.Articles.AddRange(articles); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/api/v1/articles?filter=has(tags)"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Id.Should().Be(articles[1].StringId); + // } + // + // [Fact] + // public async Task Can_filter_in_scope_of_HasMany_relationship() + // { + // // Arrange + // var blog = new Blog + // { + // Articles = new List
+ // { + // new Article + // { + // Caption = "One" + // }, + // new Article + // { + // Caption = "Two" + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync(); + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/api/v1/blogs?include=articles&filter[articles]=equals(caption,'Two')"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.Included.Should().HaveCount(1); + // + // responseDocument.Included[0].Id.Should().Be(blog.Articles[1].StringId); + // } + // + // [Fact] + // public async Task Can_filter_in_scope_of_HasMany_relationship_on_secondary_resource() + // { + // // Arrange + // var blog = new Blog + // { + // Owner = new Author + // { + // LastName = "X", + // Articles = new List
+ // { + // new Article + // { + // Caption = "One" + // }, + // new Article + // { + // Caption = "Two" + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/blogs/{blog.StringId}/owner?include=articles&filter[articles]=equals(caption,'Two')"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.Included.Should().HaveCount(1); + // + // responseDocument.Included[0].Id.Should().Be(blog.Owner.Articles[1].StringId); + // } + // + // [Fact] + // public async Task Can_filter_in_scope_of_HasManyThrough_relationship() + // { + // // Arrange + // var articles = new List
+ // { + // new Article + // { + // Caption = "X", + // ArticleTags = new HashSet + // { + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "Cold" + // } + // } + // } + // }, + // new Article + // { + // Caption = "X", + // ArticleTags = new HashSet + // { + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "Hot" + // } + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync
(); + // dbContext.Articles.AddRange(articles); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // // Workaround for https://github.com/dotnet/efcore/issues/21026 + // var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + // options.DisableTopPagination = false; + // options.DisableChildrenPagination = true; + // + // var route = "/api/v1/articles?include=tags&filter[tags]=equals(name,'Hot')"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(2); + // responseDocument.Included.Should().HaveCount(1); + // + // responseDocument.Included[0].Id.Should().Be(articles[1].ArticleTags.First().Tag.StringId); + // } + // + // [Fact] + // public async Task Can_filter_in_scope_of_relationship_chain() + // { + // // Arrange + // var blog = new Blog + // { + // Owner = new Author + // { + // LastName = "Smith", + // Articles = new List
+ // { + // new Article + // { + // Caption = "One" + // }, + // new Article + // { + // Caption = "Two" + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync(); + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/api/v1/blogs?include=owner.articles&filter[owner.articles]=equals(caption,'Two')"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.Included.Should().HaveCount(2); + // + // responseDocument.Included[0].Id.Should().Be(blog.Owner.StringId); + // responseDocument.Included[1].Id.Should().Be(blog.Owner.Articles[1].StringId); + // } + // + // [Fact] + // public async Task Can_filter_in_same_scope_multiple_times() + // { + // // Arrange + // var articles = new List
+ // { + // new Article + // { + // Caption = "One" + // }, + // new Article + // { + // Caption = "Two" + // }, + // new Article + // { + // Caption = "Three" + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync
(); + // dbContext.Articles.AddRange(articles); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/api/v1/articles?filter=equals(caption,'One')&filter=equals(caption,'Three')"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(2); + // responseDocument.ManyData[0].Id.Should().Be(articles[0].StringId); + // responseDocument.ManyData[1].Id.Should().Be(articles[2].StringId); + // } + // + // [Fact] + // public async Task Can_filter_in_same_scope_multiple_times_using_legacy_notation() + // { + // // Arrange + // var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + // options.EnableLegacyFilterNotation = true; + // + // var articles = new List
+ // { + // new Article + // { + // Caption = "One", + // Author = new Author + // { + // FirstName = "Joe", + // LastName = "Smith" + // } + // }, + // new Article + // { + // Caption = "Two", + // Author = new Author + // { + // FirstName = "John", + // LastName = "Doe" + // } + // }, + // new Article + // { + // Caption = "Three", + // Author = new Author + // { + // FirstName = "Jack", + // LastName = "Miller" + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync
(); + // dbContext.Articles.AddRange(articles); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/api/v1/articles?filter[author.firstName]=John&filter[author.lastName]=Smith"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(2); + // responseDocument.ManyData[0].Id.Should().Be(articles[0].StringId); + // responseDocument.ManyData[1].Id.Should().Be(articles[1].StringId); + // } + // + // [Fact] + // public async Task Can_filter_in_multiple_scopes() + // { + // // Arrange + // var blogs = new List + // { + // new Blog(), + // new Blog + // { + // Title = "Technology", + // Owner = new Author + // { + // LastName = "Smith", + // Articles = new List
+ // { + // new Article + // { + // Caption = "One" + // }, + // new Article + // { + // Caption = "Two", + // Revisions = new List + // { + // new Revision + // { + // PublishTime = 1.January(2000) + // }, + // new Revision + // { + // PublishTime = 10.January(2010) + // } + // } + // } + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync(); + // dbContext.Blogs.AddRange(blogs); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/api/v1/blogs?include=owner.articles.revisions&" + + // "filter=and(equals(title,'Technology'),has(owner.articles),equals(owner.lastName,'Smith'))&" + + // "filter[owner.articles]=equals(caption,'Two')&" + + // "filter[owner.articles.revisions]=greaterThan(publishTime,'2005-05-05')"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Id.Should().Be(blogs[1].StringId); + // + // responseDocument.Included.Should().HaveCount(3); + // responseDocument.Included[0].Id.Should().Be(blogs[1].Owner.StringId); + // responseDocument.Included[1].Id.Should().Be(blogs[1].Owner.Articles[1].StringId); + // responseDocument.Included[2].Id.Should().Be(blogs[1].Owner.Articles[1].Revisions.Skip(1).First().StringId); + // } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterOperatorTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterOperatorTests.cs new file mode 100644 index 0000000..c1107c0 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterOperatorTests.cs @@ -0,0 +1,567 @@ +using System; +using System.Collections.Generic; +using System.Net; +using System.Threading.Tasks; +using System.Web; +using FluentAssertions; +using Humanizer; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Queries.Expressions; +using JsonApiDotNetCore.Serialization.Objects; +using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.Filtering +{ + public sealed class FilterOperatorTests : IClassFixture> + { + private readonly IntegrationTestContext _testContext; + + public FilterOperatorTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + _testContext.RegisterResources(builder => + { + builder.Add(); + }); + + _testContext.ConfigureServicesAfterStartup(services => + { + services.AddResourceRepository>(); + }); + + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.EnableLegacyFilterNotation = false; + options.SerializerSettings.DateFormatString = "yyyy-MM-dd"; + } + + [Fact] + public async Task Can_filter_equality_on_special_characters() + { + // Arrange + var resource = new FilterableResource + { + SomeString = "This, that & more" + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] {resource, new FilterableResource()}); + }); + + var route = $"/filterableResources?filter=equals(someString,'{HttpUtility.UrlEncode(resource.SomeString)}')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes["someString"].Should().Be(resource.SomeString); + } + + // [Fact] + // public async Task Can_filter_equality_on_two_attributes_of_same_type() + // { + // // Arrange + // var resource = new FilterableResource + // { + // SomeInt32 = 5, + // OtherInt32 = 5 + // }; + // + // var otherResource = new FilterableResource + // { + // SomeInt32 = 5, + // OtherInt32 = 10 + // }; + // + // await _testContext.RunOnDatabaseAsync(async db => + // { + // var collection = db.GetCollection(nameof(FilterableResource)); + // await collection.DeleteManyAsync(Builders.Filter.Empty); + // await collection.InsertManyAsync(new[] {resource, otherResource}); + // }); + // + // var route = "/filterableResources?filter=equals(someInt32,otherInt32)"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Attributes["someInt32"].Should().Be(resource.SomeInt32); + // responseDocument.ManyData[0].Attributes["otherInt32"].Should().Be(resource.OtherInt32); + // } + + // [Fact] + // public async Task Can_filter_equality_on_two_attributes_of_same_nullable_type() + // { + // // Arrange + // var resource = new FilterableResource + // { + // SomeNullableInt32 = 5, + // OtherNullableInt32 = 5 + // }; + // + // var otherResource = new FilterableResource + // { + // SomeNullableInt32 = 5, + // OtherNullableInt32 = 10 + // }; + // + // await _testContext.RunOnDatabaseAsync(async db => + // { + // var collection = db.GetCollection(nameof(FilterableResource)); + // await collection.DeleteManyAsync(Builders.Filter.Empty); + // await collection.InsertManyAsync(new[] {resource, otherResource}); + // }); + // + // var route = "/filterableResources?filter=equals(someNullableInt32,otherNullableInt32)"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Attributes["someNullableInt32"].Should().Be(resource.SomeNullableInt32); + // responseDocument.ManyData[0].Attributes["otherNullableInt32"].Should().Be(resource.OtherNullableInt32); + // } + + // [Fact] + // public async Task Can_filter_equality_on_two_attributes_with_nullable_at_start() + // { + // // Arrange + // var resource = new FilterableResource + // { + // SomeInt32 = 5, + // SomeNullableInt32 = 5 + // }; + // + // var otherResource = new FilterableResource + // { + // SomeInt32 = 5, + // SomeNullableInt32 = 10 + // }; + // + // await _testContext.RunOnDatabaseAsync(async db => + // { + // var collection = db.GetCollection(nameof(FilterableResource)); + // await collection.DeleteManyAsync(Builders.Filter.Empty); + // await collection.InsertManyAsync(new[] {resource, otherResource}); + // }); + // + // var route = "/filterableResources?filter=equals(someNullableInt32,someInt32)"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Attributes["someInt32"].Should().Be(resource.SomeInt32); + // responseDocument.ManyData[0].Attributes["someNullableInt32"].Should().Be(resource.SomeNullableInt32); + // } + + // [Fact] + // public async Task Can_filter_equality_on_two_attributes_with_nullable_at_end() + // { + // // Arrange + // var resource = new FilterableResource + // { + // SomeInt32 = 5, + // SomeNullableInt32 = 5 + // }; + // + // var otherResource = new FilterableResource + // { + // SomeInt32 = 5, + // SomeNullableInt32 = 10 + // }; + // + // await _testContext.RunOnDatabaseAsync(async db => + // { + // var collection = db.GetCollection(nameof(FilterableResource)); + // await collection.DeleteManyAsync(Builders.Filter.Empty); + // await collection.InsertManyAsync(new[] {resource, otherResource}); + // }); + // + // var route = "/filterableResources?filter=equals(someInt32,someNullableInt32)"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Attributes["someInt32"].Should().Be(resource.SomeInt32); + // responseDocument.ManyData[0].Attributes["someNullableInt32"].Should().Be(resource.SomeNullableInt32); + // } + + // [Fact] + // public async Task Can_filter_equality_on_two_attributes_of_compatible_types() + // { + // // Arrange + // var resource = new FilterableResource + // { + // SomeInt32 = 5, + // SomeUnsignedInt64 = 5 + // }; + // + // var otherResource = new FilterableResource + // { + // SomeInt32 = 5, + // SomeUnsignedInt64 = 10 + // }; + // + // await _testContext.RunOnDatabaseAsync(async db => + // { + // var collection = db.GetCollection(nameof(FilterableResource)); + // await collection.DeleteManyAsync(Builders.Filter.Empty); + // await collection.InsertManyAsync(new[] {resource, otherResource}); + // }); + // + // var route = "/filterableResources?filter=equals(someInt32,someUnsignedInt64)"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Attributes["someInt32"].Should().Be(resource.SomeInt32); + // responseDocument.ManyData[0].Attributes["someUnsignedInt64"].Should().Be(resource.SomeUnsignedInt64); + // } + + [Fact] + public async Task Cannot_filter_equality_on_two_attributes_of_incompatible_types() + { + // Arrange + var route = "/filterableResources?filter=equals(someDouble,someTimeSpan)"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("Query creation failed due to incompatible types."); + responseDocument.Errors[0].Detail.Should().Be("No coercion operator is defined between types 'System.TimeSpan' and 'System.Double'."); + responseDocument.Errors[0].Source.Parameter.Should().BeNull(); + } + + [Theory] + [InlineData(19, 21, ComparisonOperator.LessThan, 20)] + [InlineData(19, 21, ComparisonOperator.LessThan, 21)] + [InlineData(19, 21, ComparisonOperator.LessOrEqual, 20)] + [InlineData(19, 21, ComparisonOperator.LessOrEqual, 19)] + [InlineData(21, 19, ComparisonOperator.GreaterThan, 20)] + [InlineData(21, 19, ComparisonOperator.GreaterThan, 19)] + [InlineData(21, 19, ComparisonOperator.GreaterOrEqual, 20)] + [InlineData(21, 19, ComparisonOperator.GreaterOrEqual, 21)] + public async Task Can_filter_comparison_on_whole_number(int matchingValue, int nonMatchingValue, ComparisonOperator filterOperator, double filterValue) + { + // Arrange + var resource = new FilterableResource + { + SomeInt32 = matchingValue + }; + + var otherResource = new FilterableResource + { + SomeInt32 = nonMatchingValue + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] {resource, otherResource}); + }); + + var route = $"/filterableResources?filter={filterOperator.ToString().Camelize()}(someInt32,'{filterValue}')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes["someInt32"].Should().Be(resource.SomeInt32); + } + + [Theory] + [InlineData(1.9, 2.1, ComparisonOperator.LessThan, 2.0)] + [InlineData(1.9, 2.1, ComparisonOperator.LessThan, 2.1)] + [InlineData(1.9, 2.1, ComparisonOperator.LessOrEqual, 2.0)] + [InlineData(1.9, 2.1, ComparisonOperator.LessOrEqual, 1.9)] + [InlineData(2.1, 1.9, ComparisonOperator.GreaterThan, 2.0)] + [InlineData(2.1, 1.9, ComparisonOperator.GreaterThan, 1.9)] + [InlineData(2.1, 1.9, ComparisonOperator.GreaterOrEqual, 2.0)] + [InlineData(2.1, 1.9, ComparisonOperator.GreaterOrEqual, 2.1)] + public async Task Can_filter_comparison_on_fractional_number(double matchingValue, double nonMatchingValue, ComparisonOperator filterOperator, double filterValue) + { + // Arrange + var resource = new FilterableResource + { + SomeDouble = matchingValue + }; + + var otherResource = new FilterableResource + { + SomeDouble = nonMatchingValue + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] {resource, otherResource}); + }); + + var route = $"/filterableResources?filter={filterOperator.ToString().Camelize()}(someDouble,'{filterValue}')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes["someDouble"].Should().Be(resource.SomeDouble); + } + + [Theory] + [InlineData("2001-01-01", "2001-01-09", ComparisonOperator.LessThan, "2001-01-05")] + [InlineData("2001-01-01", "2001-01-09", ComparisonOperator.LessThan, "2001-01-09")] + [InlineData("2001-01-01", "2001-01-09", ComparisonOperator.LessOrEqual, "2001-01-05")] + [InlineData("2001-01-01", "2001-01-09", ComparisonOperator.LessOrEqual, "2001-01-01")] + [InlineData("2001-01-09", "2001-01-01", ComparisonOperator.GreaterThan, "2001-01-05")] + [InlineData("2001-01-09", "2001-01-01", ComparisonOperator.GreaterThan, "2001-01-01")] + [InlineData("2001-01-09", "2001-01-01", ComparisonOperator.GreaterOrEqual, "2001-01-05")] + [InlineData("2001-01-09", "2001-01-01", ComparisonOperator.GreaterOrEqual, "2001-01-09")] + public async Task Can_filter_comparison_on_DateTime(string matchingDateTime, string nonMatchingDateTime, ComparisonOperator filterOperator, string filterDateTime) + { + // Arrange + var resource = new FilterableResource + { + SomeDateTime = DateTime.ParseExact(matchingDateTime, "yyyy-MM-dd", null) + }; + + var otherResource = new FilterableResource + { + SomeDateTime = DateTime.ParseExact(nonMatchingDateTime, "yyyy-MM-dd", null) + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] {resource, otherResource}); + }); + + var route = $"/filterableResources?filter={filterOperator.ToString().Camelize()}(someDateTime,'{DateTime.ParseExact(filterDateTime, "yyyy-MM-dd", null)}')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes["someDateTime"].Should().Be(resource.SomeDateTime.ToString("yyyy-MM-dd")); + } + + [Theory] + [InlineData("The fox jumped over the lazy dog", "Other", TextMatchKind.Contains, "jumped")] + [InlineData("The fox jumped over the lazy dog", "the fox...", TextMatchKind.Contains, "The")] + [InlineData("The fox jumped over the lazy dog", "The fox jumped", TextMatchKind.Contains, "dog")] + [InlineData("The fox jumped over the lazy dog", "Yesterday The fox...", TextMatchKind.StartsWith, "The")] + [InlineData("The fox jumped over the lazy dog", "over the lazy dog earlier", TextMatchKind.EndsWith, "dog")] + public async Task Can_filter_text_match(string matchingText, string nonMatchingText, TextMatchKind matchKind, string filterText) + { + // Arrange + var resource = new FilterableResource + { + SomeString = matchingText + }; + + var otherResource = new FilterableResource + { + SomeString = nonMatchingText + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] {resource, otherResource}); + }); + + var route = $"/filterableResources?filter={matchKind.ToString().Camelize()}(someString,'{filterText}')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes["someString"].Should().Be(resource.SomeString); + } + + [Theory] + [InlineData("two", "one two", "'one','two','three'")] + [InlineData("two", "nine", "'one','two','three','four','five'")] + public async Task Can_filter_in_set(string matchingText, string nonMatchingText, string filterText) + { + // Arrange + var resource = new FilterableResource + { + SomeString = matchingText + }; + + var otherResource = new FilterableResource + { + SomeString = nonMatchingText + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] {resource, otherResource}); + }); + + var route = $"/filterableResources?filter=any(someString,{filterText})"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes["someString"].Should().Be(resource.SomeString); + } + + [Fact] + public async Task Can_filter_on_has() + { + // Arrange + var resource = new FilterableResource + { + Children = new List + { + new FilterableResource() + } + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] {resource, new FilterableResource()}); + }); + + var route = "/filterableResources?filter=has(children)"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Id.Should().Be(resource.StringId); + } + + [Fact] + public async Task Can_filter_on_count() + { + // Arrange + var resource = new FilterableResource + { + Children = new List + { + new FilterableResource(), + new FilterableResource() + } + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] {resource, new FilterableResource()}); + }); + + var route = "/filterableResources?filter=equals(count(children),'2')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Id.Should().Be(resource.StringId); + } + + [Theory] + [InlineData("and(equals(someString,'ABC'),equals(someInt32,'11'))")] + [InlineData("and(equals(someString,'ABC'),equals(someInt32,'11'),equals(someEnum,'Tuesday'))")] + [InlineData("or(equals(someString,'---'),lessThan(someInt32,'33'))")] + [InlineData("not(equals(someEnum,'Saturday'))")] + public async Task Can_filter_on_logical_functions(string filterExpression) + { + // Arrange + var resource1 = new FilterableResource + { + SomeString = "ABC", + SomeInt32 = 11, + SomeEnum = DayOfWeek.Tuesday + }; + + var resource2 = new FilterableResource + { + SomeString = "XYZ", + SomeInt32 = 99, + SomeEnum = DayOfWeek.Saturday + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(FilterableResource)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] {resource1, resource2}); + }); + + var route = $"/filterableResources?filter={filterExpression}"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Id.Should().Be(resource1.StringId); + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterTests.cs new file mode 100644 index 0000000..bb68358 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterTests.cs @@ -0,0 +1,111 @@ +using System.Net; +using System.Threading.Tasks; +using FluentAssertions; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Serialization.Objects; +using JsonApiDotNetCore.MongoDb.Example.Models; +using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.Filtering +{ + public sealed class FilterTests : IClassFixture> + { + private readonly IntegrationTestContext _testContext; + + public FilterTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.EnableLegacyFilterNotation = false; + } + + [Fact] + public async Task Cannot_filter_in_unknown_scope() + { + // Arrange + var route = "/api/v1/people?filter[doesNotExist]=equals(title,null)"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("The specified filter is invalid."); + responseDocument.Errors[0].Detail.Should().Be("Relationship 'doesNotExist' does not exist on resource 'people'."); + responseDocument.Errors[0].Source.Parameter.Should().Be("filter[doesNotExist]"); + } + + [Fact] + public async Task Cannot_filter_in_unknown_nested_scope() + { + // Arrange + var route = "/api/v1/people?filter[todoItems.doesNotExist]=equals(title,null)"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("The specified filter is invalid."); + responseDocument.Errors[0].Detail.Should().Be("Relationship 'todoItems' in 'todoItems.doesNotExist' does not exist on resource 'people'."); + responseDocument.Errors[0].Source.Parameter.Should().Be("filter[todoItems.doesNotExist]"); + } + + [Fact] + public async Task Cannot_filter_on_attribute_with_blocked_capability() + { + // Arrange + var route = "/api/v1/todoItems?filter=equals(achievedDate,null)"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("Filtering on the requested attribute is not allowed."); + responseDocument.Errors[0].Detail.Should().Be("Filtering on attribute 'achievedDate' is not allowed."); + responseDocument.Errors[0].Source.Parameter.Should().Be("filter"); + } + + [Fact] + public async Task Can_filter_on_ID() + { + // Arrange + var person = new Person + { + FirstName = "Jane" + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(Person)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(new[] {person, new Person()}); + }); + + var route = $"/api/v1/people?filter=equals(id,'{person.StringId}')"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Id.Should().Be(person.StringId); + responseDocument.ManyData[0].Attributes["firstName"].Should().Be(person.FirstName); + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterableResource.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterableResource.cs new file mode 100644 index 0000000..182a312 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterableResource.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.Filtering +{ + public sealed class FilterableResource : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] public string SomeString { get; set; } + + [Attr] public bool SomeBoolean { get; set; } + [Attr] public bool? SomeNullableBoolean { get; set; } + + [Attr] public int SomeInt32 { get; set; } + [Attr] public int? SomeNullableInt32 { get; set; } + + [Attr] public int OtherInt32 { get; set; } + [Attr] public int? OtherNullableInt32 { get; set; } + + [Attr] public ulong SomeUnsignedInt64 { get; set; } + [Attr] public ulong? SomeNullableUnsignedInt64 { get; set; } + + [Attr] public decimal SomeDecimal { get; set; } + [Attr] public decimal? SomeNullableDecimal { get; set; } + + [Attr] public double SomeDouble { get; set; } + [Attr] public double? SomeNullableDouble { get; set; } + + [Attr] public Guid SomeGuid { get; set; } + [Attr] public Guid? SomeNullableGuid { get; set; } + + [Attr] public DateTime SomeDateTime { get; set; } + [Attr] public DateTime? SomeNullableDateTime { get; set; } + + [Attr] public DateTimeOffset SomeDateTimeOffset { get; set; } + [Attr] public DateTimeOffset? SomeNullableDateTimeOffset { get; set; } + + [Attr] public TimeSpan SomeTimeSpan { get; set; } + [Attr] public TimeSpan? SomeNullableTimeSpan { get; set; } + + [Attr] public DayOfWeek SomeEnum { get; set; } + [Attr] public DayOfWeek? SomeNullableEnum { get; set; } + + [HasMany] public ICollection Children { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterableResourcesController.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterableResourcesController.cs new file mode 100644 index 0000000..42eb764 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Filtering/FilterableResourcesController.cs @@ -0,0 +1,16 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.Filtering +{ + public sealed class FilterableResourcesController : JsonApiController + { + public FilterableResourcesController(IJsonApiOptions options, ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Meta/TopLevelCountTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Meta/TopLevelCountTests.cs new file mode 100644 index 0000000..fa5ca00 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Meta/TopLevelCountTests.cs @@ -0,0 +1,127 @@ +using System.Net; +using System.Threading.Tasks; +using FluentAssertions; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Serialization.Objects; +using JsonApiDotNetCore.MongoDb.Example.Models; +using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.Meta +{ + public sealed class TopLevelCountTests : IClassFixture> + { + private readonly IntegrationTestContext _testContext; + + public TopLevelCountTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.IncludeTotalResourceCount = true; + } + + [Fact] + public async Task Total_Resource_Count_Included_For_Collection() + { + // Arrange + var todoItem = new TodoItem(); + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(TodoItem)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertOneAsync(todoItem); + }); + + var route = "/api/v1/todoItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.Meta.Should().NotBeNull(); + responseDocument.Meta["totalResources"].Should().Be(1); + } + + [Fact] + public async Task Total_Resource_Count_Included_For_Empty_Collection() + { + // Arrange + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(TodoItem)).DeleteManyAsync(Builders.Filter.Empty)); + + var route = "/api/v1/todoItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.Meta.Should().NotBeNull(); + responseDocument.Meta["totalResources"].Should().Be(0); + } + + [Fact] + public async Task Total_Resource_Count_Excluded_From_POST_Response() + { + // Arrange + var requestBody = new + { + data = new + { + type = "todoItems", + attributes = new + { + description = "Something" + } + } + }; + + var route = "/api/v1/todoItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.Created); + + responseDocument.Meta.Should().BeNull(); + } + + [Fact] + public async Task Total_Resource_Count_Excluded_From_PATCH_Response() + { + // Arrange + var todoItem = new TodoItem(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(TodoItem)).InsertOneAsync(todoItem)); + + var requestBody = new + { + data = new + { + type = "todoItems", + id = todoItem.Id, + attributes = new + { + description = "Something else" + } + } + }; + + var route = $"/api/v1/todoItems/{todoItem.Id}"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.Meta.Should().BeNull(); + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ObjectAssertionsExtensions.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ObjectAssertionsExtensions.cs new file mode 100644 index 0000000..3463b56 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ObjectAssertionsExtensions.cs @@ -0,0 +1,28 @@ +using System; +using FluentAssertions; +using FluentAssertions.Primitives; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests +{ + public static class ObjectAssertionsExtensions + { + /// + /// Used to assert on a nullable column, whose value is returned as in JSON:API response body. + /// + public static void BeCloseTo(this ObjectAssertions source, DateTimeOffset? expected, string because = "", + params object[] becauseArgs) + { + if (expected == null) + { + source.Subject.Should().BeNull(because, becauseArgs); + } + else + { + // We lose a little bit of precision (milliseconds) on roundtrip through PostgreSQL database. + + var value = new DateTimeOffset((DateTime) source.Subject); + value.Should().BeCloseTo(expected.Value, because: because, becauseArgs: becauseArgs); + } + } + } +} \ No newline at end of file diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Pagination/PaginationWithTotalCountTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Pagination/PaginationWithTotalCountTests.cs new file mode 100644 index 0000000..4b3c2df --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Pagination/PaginationWithTotalCountTests.cs @@ -0,0 +1,776 @@ +using System.Collections.Generic; +using System.Net; +using System.Threading.Tasks; +using Bogus; +using FluentAssertions; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Serialization.Objects; +using JsonApiDotNetCore.MongoDb.Example.Models; +using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.Pagination +{ + public sealed class PaginationWithTotalCountTests : IClassFixture> + { + private const int _defaultPageSize = 5; + private readonly IntegrationTestContext _testContext; + private readonly Faker _todoItemFaker = new Faker(); + + public PaginationWithTotalCountTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.IncludeTotalResourceCount = true; + options.DefaultPageSize = new PageSize(_defaultPageSize); + options.MaximumPageSize = null; + options.MaximumPageNumber = null; + options.AllowUnknownQueryStringParameters = true; + } + + [Fact] + public async Task Can_paginate_in_primary_resources() + { + // Arrange + var articles = new List
+ { + new Article + { + Caption = "One" + }, + new Article + { + Caption = "Two" + } + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection
(nameof(Article)); + await collection.DeleteManyAsync(Builders
.Filter.Empty); + await collection.InsertManyAsync(articles); + }); + + var route = "/api/v1/articles?page[number]=2&page[size]=1"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Id.Should().Be(articles[1].StringId); + + responseDocument.Links.Should().NotBeNull(); + responseDocument.Links.Self.Should().Be("http://localhost" + route); + responseDocument.Links.First.Should().Be("http://localhost/api/v1/articles?page[size]=1"); + responseDocument.Links.Last.Should().Be(responseDocument.Links.Self); + responseDocument.Links.Prev.Should().Be(responseDocument.Links.First); + responseDocument.Links.Next.Should().BeNull(); + } + + [Fact] + public async Task Cannot_paginate_in_single_primary_resource() + { + // Arrange + var article = new Article + { + Caption = "X" + }; + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection
(nameof(Article)).InsertOneAsync(article)); + + var route = $"/api/v1/articles/{article.StringId}?page[number]=2"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("The specified paging is invalid."); + responseDocument.Errors[0].Detail.Should().Be("This query string parameter can only be used on a collection of resources (not on a single resource)."); + responseDocument.Errors[0].Source.Parameter.Should().Be("page[number]"); + } + + // [Fact] + // public async Task Can_paginate_in_secondary_resources() + // { + // // Arrange + // var blog = new Blog + // { + // Articles = new List
+ // { + // new Article + // { + // Caption = "One" + // }, + // new Article + // { + // Caption = "Two" + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/blogs/{blog.StringId}/api/v1/articles?page[number]=2&page[size]=1"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Id.Should().Be(blog.Articles[1].StringId); + // + // responseDocument.Links.Should().NotBeNull(); + // responseDocument.Links.Self.Should().Be("http://localhost" + route); + // responseDocument.Links.First.Should().Be($"http://localhost/blogs/{blog.StringId}/api/v1/articles?page[size]=1"); + // responseDocument.Links.Last.Should().BeNull(); + // responseDocument.Links.Prev.Should().Be(responseDocument.Links.First); + // responseDocument.Links.Next.Should().Be($"http://localhost/blogs/{blog.StringId}/api/v1/articles?page[number]=3&page[size]=1"); + // } + + // [Fact] + // public async Task Cannot_paginate_in_single_secondary_resource() + // { + // // Arrange + // var article = new Article + // { + // Caption = "X" + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Articles.Add(article); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/articles/{article.StringId}/author?page[size]=5"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + // + // responseDocument.Errors.Should().HaveCount(1); + // responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + // responseDocument.Errors[0].Title.Should().Be("The specified paging is invalid."); + // responseDocument.Errors[0].Detail.Should().Be("This query string parameter can only be used on a collection of resources (not on a single resource)."); + // responseDocument.Errors[0].Source.Parameter.Should().Be("page[size]"); + // } + + // [Fact] + // public async Task Can_paginate_in_scope_of_HasMany_relationship() + // { + // // Arrange + // var blogs = new List + // { + // new Blog + // { + // Articles = new List
+ // { + // new Article + // { + // Caption = "One" + // }, + // new Article + // { + // Caption = "Two" + // } + // } + // }, + // new Blog + // { + // Articles = new List
+ // { + // new Article + // { + // Caption = "First" + // }, + // new Article + // { + // Caption = "Second" + // } + // } + // }, + // new Blog() + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync(); + // dbContext.Blogs.AddRange(blogs); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/blogs?include=articles&page[number]=articles:2&page[size]=2,articles:1"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(2); + // responseDocument.Included.Should().HaveCount(2); + // + // responseDocument.Included[0].Id.Should().Be(blogs[0].Articles[1].StringId); + // responseDocument.Included[1].Id.Should().Be(blogs[1].Articles[1].StringId); + // + // responseDocument.Links.Should().NotBeNull(); + // responseDocument.Links.Self.Should().Be("http://localhost" + route); + // responseDocument.Links.First.Should().Be("http://localhost/blogs?include=articles&page[size]=2,articles:1"); + // responseDocument.Links.Last.Should().Be("http://localhost/blogs?include=articles&page[number]=2&page[size]=2,articles:1"); + // responseDocument.Links.Prev.Should().BeNull(); + // responseDocument.Links.Next.Should().Be(responseDocument.Links.Last); + // } + // + // [Fact] + // public async Task Can_paginate_in_scope_of_HasMany_relationship_on_secondary_resource() + // { + // // Arrange + // var blog = new Blog + // { + // Owner = new Author + // { + // LastName = "Smith", + // Articles = new List
+ // { + // new Article + // { + // Caption = "One" + // }, + // new Article + // { + // Caption = "Two" + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/blogs/{blog.StringId}/owner?include=articles&page[number]=articles:2&page[size]=articles:1"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.Included.Should().HaveCount(1); + // responseDocument.Included[0].Id.Should().Be(blog.Owner.Articles[1].StringId); + // + // responseDocument.Links.Should().NotBeNull(); + // responseDocument.Links.Self.Should().Be("http://localhost" + route); + // responseDocument.Links.First.Should().BeNull(); + // responseDocument.Links.Last.Should().BeNull(); + // responseDocument.Links.Prev.Should().BeNull(); + // responseDocument.Links.Next.Should().BeNull(); + // } + // + // [Fact] + // public async Task Can_paginate_HasMany_relationship_on_relationship_endpoint() + // { + // // Arrange + // var blog = new Blog + // { + // Articles = new List
+ // { + // new Article + // { + // Caption = "One" + // }, + // new Article + // { + // Caption = "Two" + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/blogs/{blog.StringId}/relationships/api/v1/articles?page[number]=2&page[size]=1"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Id.Should().Be(blog.Articles[1].StringId); + // + // responseDocument.Links.Should().NotBeNull(); + // responseDocument.Links.Self.Should().Be("http://localhost" + route); + // responseDocument.Links.First.Should().Be($"http://localhost/blogs/{blog.StringId}/relationships/api/v1/articles?page[size]=1"); + // responseDocument.Links.Last.Should().BeNull(); + // responseDocument.Links.Prev.Should().Be(responseDocument.Links.First); + // responseDocument.Links.Next.Should().BeNull(); + // } + // + // [Fact] + // public async Task Can_paginate_in_scope_of_HasManyThrough_relationship() + // { + // // Arrange + // var articles = new List
+ // { + // new Article + // { + // Caption = "X", + // ArticleTags = new HashSet + // { + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "Cold" + // } + // }, + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "Hot" + // } + // } + // } + // }, + // new Article + // { + // Caption = "X", + // ArticleTags = new HashSet + // { + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "Wet" + // } + // }, + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "Dry" + // } + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync
(); + // dbContext.Articles.AddRange(articles); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // // Workaround for https://github.com/dotnet/efcore/issues/21026 + // var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + // options.DisableTopPagination = true; + // options.DisableChildrenPagination = false; + // + // var route = "/api/v1/articles?include=tags&page[number]=tags:2&page[size]=tags:1"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(2); + // responseDocument.Included.Should().HaveCount(2); + // + // responseDocument.Included[0].Id.Should().Be(articles[0].ArticleTags.Skip(1).First().Tag.StringId); + // responseDocument.Included[1].Id.Should().Be(articles[1].ArticleTags.Skip(1).First().Tag.StringId); + // + // responseDocument.Links.Should().NotBeNull(); + // responseDocument.Links.Self.Should().Be("http://localhost" + route); + // responseDocument.Links.First.Should().Be("http://localhost/api/v1/articles?include=tags&page[size]=tags:1"); + // responseDocument.Links.Last.Should().Be(responseDocument.Links.First); + // responseDocument.Links.Prev.Should().BeNull(); + // responseDocument.Links.Next.Should().BeNull(); + // } + // + // [Fact] + // public async Task Can_paginate_HasManyThrough_relationship_on_relationship_endpoint() + // { + // // Arrange + // var article = new Article + // { + // Caption = "X", + // ArticleTags = new HashSet + // { + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "Cold" + // } + // }, + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "Hot" + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync
(); + // dbContext.Articles.Add(article); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/articles/{article.StringId}/relationships/tags?page[number]=2&page[size]=1"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Id.Should().Be(article.ArticleTags.ElementAt(1).TagId.ToString()); + // + // responseDocument.Links.Should().NotBeNull(); + // responseDocument.Links.Self.Should().Be("http://localhost" + route); + // responseDocument.Links.First.Should().Be($"http://localhost/api/v1/articles/{article.StringId}/relationships/tags?page[size]=1"); + // responseDocument.Links.Last.Should().BeNull(); + // responseDocument.Links.Prev.Should().Be(responseDocument.Links.First); + // responseDocument.Links.Next.Should().BeNull(); + // } + // + // [Fact] + // public async Task Can_paginate_in_multiple_scopes() + // { + // // Arrange + // var blogs = new List + // { + // new Blog + // { + // Title = "Cooking" + // }, + // new Blog + // { + // Title = "Technology", + // Owner = new Author + // { + // LastName = "Smith", + // Articles = new List
+ // { + // new Article + // { + // Caption = "One" + // }, + // new Article + // { + // Caption = "Two", + // Revisions = new List + // { + // new Revision + // { + // PublishTime = 1.January(2000) + // }, + // new Revision + // { + // PublishTime = 10.January(2010) + // } + // } + // } + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync(); + // dbContext.Blogs.AddRange(blogs); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/blogs?include=owner.articles.revisions&" + + // "page[size]=1,owner.articles:1,owner.articles.revisions:1&" + + // "page[number]=2,owner.articles:2,owner.articles.revisions:2"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Id.Should().Be(blogs[1].StringId); + // + // responseDocument.Included.Should().HaveCount(3); + // responseDocument.Included[0].Id.Should().Be(blogs[1].Owner.StringId); + // responseDocument.Included[1].Id.Should().Be(blogs[1].Owner.Articles[1].StringId); + // responseDocument.Included[2].Id.Should().Be(blogs[1].Owner.Articles[1].Revisions.Skip(1).First().StringId); + // + // responseDocument.Links.Should().NotBeNull(); + // responseDocument.Links.Self.Should().Be("http://localhost" + route); + // responseDocument.Links.First.Should().Be("http://localhost/blogs?include=owner.articles.revisions&page[size]=1,owner.articles:1,owner.articles.revisions:1"); + // responseDocument.Links.Last.Should().Be("http://localhost/blogs?include=owner.articles.revisions&page[size]=1,owner.articles:1,owner.articles.revisions:1&page[number]=2"); + // responseDocument.Links.Prev.Should().Be(responseDocument.Links.First); + // responseDocument.Links.Next.Should().BeNull(); + // } + + // [Fact] + // public async Task Cannot_paginate_in_unknown_scope() + // { + // // Arrange + // var route = "/people?page[number]=doesNotExist:1"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + // + // responseDocument.Errors.Should().HaveCount(1); + // responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + // responseDocument.Errors[0].Title.Should().Be("The specified paging is invalid."); + // responseDocument.Errors[0].Detail.Should().Be("Relationship 'doesNotExist' does not exist on resource 'people'."); + // responseDocument.Errors[0].Source.Parameter.Should().Be("page[number]"); + // } + // + // [Fact] + // public async Task Cannot_paginate_in_unknown_nested_scope() + // { + // // Arrange + // var route = "/people?page[size]=todoItems.doesNotExist:1"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + // + // responseDocument.Errors.Should().HaveCount(1); + // responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + // responseDocument.Errors[0].Title.Should().Be("The specified paging is invalid."); + // responseDocument.Errors[0].Detail.Should().Be("Relationship 'doesNotExist' in 'todoItems.doesNotExist' does not exist on resource 'todoItems'."); + // responseDocument.Errors[0].Source.Parameter.Should().Be("page[size]"); + // } + + // [Fact] + // public async Task Uses_default_page_number_and_size() + // { + // // Arrange + // var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + // options.DefaultPageSize = new PageSize(2); + // + // var blog = new Blog + // { + // Articles = new List
+ // { + // new Article + // { + // Caption = "One" + // }, + // new Article + // { + // Caption = "Two" + // }, + // new Article + // { + // Caption = "Three" + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/blogs/{blog.StringId}/api/v1/articles"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(2); + // responseDocument.ManyData[0].Id.Should().Be(blog.Articles[0].StringId); + // responseDocument.ManyData[1].Id.Should().Be(blog.Articles[1].StringId); + // + // responseDocument.Links.Should().NotBeNull(); + // responseDocument.Links.Self.Should().Be("http://localhost" + route); + // responseDocument.Links.First.Should().Be(responseDocument.Links.Self); + // responseDocument.Links.Last.Should().BeNull(); + // responseDocument.Links.Prev.Should().BeNull(); + // responseDocument.Links.Next.Should().Be($"http://localhost/blogs/{blog.StringId}/api/v1/articles?page[number]=2"); + // } + // + // [Fact] + // public async Task Returns_all_resources_when_paging_is_disabled() + // { + // // Arrange + // var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + // options.DefaultPageSize = null; + // + // var blog = new Blog + // { + // Articles = new List
() + // }; + // + // for (int index = 0; index < 25; index++) + // { + // blog.Articles.Add(new Article + // { + // Caption = $"Item {index:D3}" + // }); + // } + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/blogs/{blog.StringId}/api/v1/articles"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(25); + // + // responseDocument.Links.Should().NotBeNull(); + // responseDocument.Links.Self.Should().Be("http://localhost" + route); + // responseDocument.Links.First.Should().BeNull(); + // responseDocument.Links.Last.Should().BeNull(); + // responseDocument.Links.Prev.Should().BeNull(); + // responseDocument.Links.Next.Should().BeNull(); + // } + + // [Theory] + // [InlineData(1, 1, 4, null, 2)] + // [InlineData(2, 1, 4, 1, 3)] + // [InlineData(3, 1, 4, 2, 4)] + // [InlineData(4, 1, 4, 3, null)] + // public async Task Renders_correct_top_level_links_for_page_number(int pageNumber, int? firstLink, int? lastLink, int? prevLink, int? nextLink) + // { + // // Arrange + // var person = new Person + // { + // LastName = "&Ampersand" + // }; + // + // const int totalCount = 3 * _defaultPageSize + 3; + // var todoItems = _todoItemFaker.Generate(totalCount); + // + // foreach (var todoItem in todoItems) + // { + // todoItem.Owner = person; + // } + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync(); + // dbContext.TodoItems.AddRange(todoItems); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var routePrefix = "/todoItems?filter=equals(owner.lastName,'" + WebUtility.UrlEncode(person.LastName) + "')" + + // "&fields[people]=firstName&include=owner&sort=ordinal&foo=bar,baz"; + // var route = routePrefix + $"&page[number]={pageNumber}"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // Assert.Equal("http://localhost" + route, responseDocument.Links.Self); + // + // if (firstLink != null) + // { + // var expected = "http://localhost" + SetPageNumberInUrl(routePrefix, firstLink.Value); + // Assert.Equal(expected, responseDocument.Links.First); + // } + // else + // { + // Assert.Null(responseDocument.Links.First); + // } + // + // if (prevLink != null) + // { + // var expected = "http://localhost" + SetPageNumberInUrl(routePrefix, prevLink.Value); + // Assert.Equal(expected, responseDocument.Links.Prev); + // } + // else + // { + // Assert.Null(responseDocument.Links.Prev); + // } + // + // if (nextLink != null) + // { + // var expected = "http://localhost" + SetPageNumberInUrl(routePrefix, nextLink.Value); + // Assert.Equal(expected, responseDocument.Links.Next); + // } + // else + // { + // Assert.Null(responseDocument.Links.Next); + // } + // + // if (lastLink != null) + // { + // var expected = "http://localhost" + SetPageNumberInUrl(routePrefix, lastLink.Value); + // Assert.Equal(expected, responseDocument.Links.Last); + // } + // else + // { + // Assert.Null(responseDocument.Links.Last); + // } + // + // static string SetPageNumberInUrl(string url, int pageNumber) + // { + // return pageNumber != 1 ? url + "&page[number]=" + pageNumber : url; + // } + // } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Pagination/PaginationWithoutTotalCountTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Pagination/PaginationWithoutTotalCountTests.cs new file mode 100644 index 0000000..fdb4d6c --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Pagination/PaginationWithoutTotalCountTests.cs @@ -0,0 +1,196 @@ +using System.Net; +using System.Threading.Tasks; +using Bogus; +using FluentAssertions; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Serialization.Objects; +using JsonApiDotNetCore.MongoDb.Example.Models; +using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.Pagination +{ + public sealed class PaginationWithoutTotalCountTests : IClassFixture> + { + private const int _defaultPageSize = 5; + private readonly IntegrationTestContext _testContext; + private readonly Faker
_articleFaker = new Faker
(); + + public PaginationWithoutTotalCountTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + + options.IncludeTotalResourceCount = false; + options.DefaultPageSize = new PageSize(_defaultPageSize); + options.AllowUnknownQueryStringParameters = true; + } + + [Fact] + public async Task When_page_size_is_unconstrained_it_should_not_render_pagination_links() + { + // Arrange + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.DefaultPageSize = null; + + var route = "/api/v1/articles?foo=bar"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.Links.Should().NotBeNull(); + responseDocument.Links.Self.Should().Be("http://localhost/api/v1/articles?foo=bar"); + responseDocument.Links.First.Should().BeNull(); + responseDocument.Links.Last.Should().BeNull(); + responseDocument.Links.Prev.Should().BeNull(); + responseDocument.Links.Next.Should().BeNull(); + } + + [Fact] + public async Task When_page_size_is_specified_in_query_string_with_no_data_it_should_render_pagination_links() + { + // Arrange + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.DefaultPageSize = null; + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection
(nameof(Article)).DeleteManyAsync(Builders
.Filter.Empty)); + + var route = "/api/v1/articles?page[size]=8&foo=bar"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.Links.Should().NotBeNull(); + responseDocument.Links.Self.Should().Be("http://localhost/api/v1/articles?page[size]=8&foo=bar"); + responseDocument.Links.First.Should().Be("http://localhost/api/v1/articles?page[size]=8&foo=bar"); + responseDocument.Links.Last.Should().BeNull(); + responseDocument.Links.Prev.Should().BeNull(); + responseDocument.Links.Next.Should().BeNull(); + } + + [Fact] + public async Task When_page_number_is_specified_in_query_string_with_no_data_it_should_render_pagination_links() + { + // Arrange + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection
(nameof(Article)).DeleteManyAsync(Builders
.Filter.Empty)); + + var route = "/api/v1/articles?page[number]=2&foo=bar"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.Links.Should().NotBeNull(); + responseDocument.Links.Self.Should().Be("http://localhost/api/v1/articles?page[number]=2&foo=bar"); + responseDocument.Links.First.Should().Be("http://localhost/api/v1/articles?foo=bar"); + responseDocument.Links.Last.Should().BeNull(); + responseDocument.Links.Prev.Should().Be("http://localhost/api/v1/articles?foo=bar"); + responseDocument.Links.Next.Should().BeNull(); + } + + [Fact] + public async Task When_page_number_is_specified_in_query_string_with_partially_filled_page_it_should_render_pagination_links() + { + // Arrange + var articles = _articleFaker.Generate(12); + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection
(nameof(Article)); + await collection.DeleteManyAsync(Builders
.Filter.Empty); + await collection.InsertManyAsync(articles); + }); + + var route = "/api/v1/articles?foo=bar&page[number]=3"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Count.Should().BeLessThan(_defaultPageSize); + + responseDocument.Links.Should().NotBeNull(); + responseDocument.Links.Self.Should().Be("http://localhost/api/v1/articles?foo=bar&page[number]=3"); + responseDocument.Links.First.Should().Be("http://localhost/api/v1/articles?foo=bar"); + responseDocument.Links.Last.Should().BeNull(); + responseDocument.Links.Prev.Should().Be("http://localhost/api/v1/articles?foo=bar&page[number]=2"); + responseDocument.Links.Next.Should().BeNull(); + } + + [Fact] + public async Task When_page_number_is_specified_in_query_string_with_full_page_it_should_render_pagination_links() + { + // Arrange + var articles = _articleFaker.Generate(_defaultPageSize * 3); + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection
(nameof(Article)); + await collection.DeleteManyAsync(Builders
.Filter.Empty); + await collection.InsertManyAsync(articles); + }); + + var route = "/api/v1/articles?page[number]=3&foo=bar"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(_defaultPageSize); + + responseDocument.Links.Should().NotBeNull(); + responseDocument.Links.Self.Should().Be("http://localhost/api/v1/articles?page[number]=3&foo=bar"); + responseDocument.Links.First.Should().Be("http://localhost/api/v1/articles?foo=bar"); + responseDocument.Links.Last.Should().BeNull(); + responseDocument.Links.Prev.Should().Be("http://localhost/api/v1/articles?page[number]=2&foo=bar"); + responseDocument.Links.Next.Should().Be("http://localhost/api/v1/articles?page[number]=4&foo=bar"); + } + + // [Fact] + // public async Task When_page_number_is_specified_in_query_string_with_full_page_on_secondary_endpoint_it_should_render_pagination_links() + // { + // // Arrange + // var author = new Author + // { + // Articles = _articleFaker.Generate(_defaultPageSize * 3) + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.AuthorDifferentDbContextName.Add(author); + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/authors/{author.StringId}/articles?page[number]=3&foo=bar"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(_defaultPageSize); + // + // responseDocument.Links.Should().NotBeNull(); + // responseDocument.Links.Self.Should().Be($"http://localhost/authors/{author.StringId}/articles?page[number]=3&foo=bar"); + // responseDocument.Links.First.Should().Be($"http://localhost/authors/{author.StringId}/articles?foo=bar"); + // responseDocument.Links.Last.Should().BeNull(); + // responseDocument.Links.Prev.Should().Be($"http://localhost/authors/{author.StringId}/articles?page[number]=2&foo=bar"); + // responseDocument.Links.Next.Should().Be($"http://localhost/authors/{author.StringId}/articles?page[number]=4&foo=bar"); + // } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Pagination/RangeValidationTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Pagination/RangeValidationTests.cs new file mode 100644 index 0000000..f524d6b --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Pagination/RangeValidationTests.cs @@ -0,0 +1,151 @@ +using System.Net; +using System.Threading.Tasks; +using Bogus; +using FluentAssertions; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Serialization.Objects; +using JsonApiDotNetCore.MongoDb.Example.Models; +using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.Pagination +{ + public sealed class RangeValidationTests : IClassFixture> + { + private readonly IntegrationTestContext _testContext; + private readonly Faker _todoItemFaker = new Faker(); + + private const int _defaultPageSize = 5; + + public RangeValidationTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.DefaultPageSize = new PageSize(_defaultPageSize); + options.MaximumPageSize = null; + options.MaximumPageNumber = null; + } + + [Fact] + public async Task When_page_number_is_negative_it_must_fail() + { + // Arrange + var route = "/api/v1/todoItems?page[number]=-1"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("The specified paging is invalid."); + responseDocument.Errors[0].Detail.Should().Be("Page number cannot be negative or zero."); + responseDocument.Errors[0].Source.Parameter.Should().Be("page[number]"); + } + + [Fact] + public async Task When_page_number_is_zero_it_must_fail() + { + // Arrange + var route = "/api/v1/todoItems?page[number]=0"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("The specified paging is invalid."); + responseDocument.Errors[0].Detail.Should().Be("Page number cannot be negative or zero."); + responseDocument.Errors[0].Source.Parameter.Should().Be("page[number]"); + } + + [Fact] + public async Task When_page_number_is_positive_it_must_succeed() + { + // Arrange + var route = "/api/v1/todoItems?page[number]=20"; + + // Act + var (httpResponse, _) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + } + + [Fact] + public async Task When_page_number_is_too_high_it_must_return_empty_set_of_resources() + { + // Arrange + var todoItems = _todoItemFaker.Generate(3); + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(TodoItem)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(todoItems); + }); + + var route = "/api/v1/todoItems?sort=id&page[size]=3&page[number]=2"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().BeEmpty(); + } + + [Fact] + public async Task When_page_size_is_negative_it_must_fail() + { + // Arrange + var route = "/api/v1/todoItems?page[size]=-1"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("The specified paging is invalid."); + responseDocument.Errors[0].Detail.Should().Be("Page size cannot be negative."); + responseDocument.Errors[0].Source.Parameter.Should().Be("page[size]"); + } + + [Fact] + public async Task When_page_size_is_zero_it_must_succeed() + { + // Arrange + var route = "/api/v1/todoItems?page[size]=0"; + + // Act + var (httpResponse, _) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + } + + [Fact] + public async Task When_page_size_is_positive_it_must_succeed() + { + // Arrange + var route = "/api/v1/todoItems?page[size]=50"; + + // Act + var (httpResponse, _) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Pagination/RangeValidationWithMaximumTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Pagination/RangeValidationWithMaximumTests.cs new file mode 100644 index 0000000..dd782ac --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Pagination/RangeValidationWithMaximumTests.cs @@ -0,0 +1,143 @@ +using System.Net; +using System.Threading.Tasks; +using FluentAssertions; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Serialization.Objects; +using Microsoft.Extensions.DependencyInjection; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.Pagination +{ + public sealed class RangeValidationWithMaximumTests : IClassFixture> + { + private readonly IntegrationTestContext _testContext; + + private const int _maximumPageSize = 15; + private const int _maximumPageNumber = 20; + + public RangeValidationWithMaximumTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.DefaultPageSize = new PageSize(5); + options.MaximumPageSize = new PageSize(_maximumPageSize); + options.MaximumPageNumber = new PageNumber(_maximumPageNumber); + } + + [Fact] + public async Task When_page_number_is_below_maximum_it_must_succeed() + { + // Arrange + const int pageNumber = _maximumPageNumber - 1; + var route = "/api/v1/todoItems?page[number]=" + pageNumber; + + // Act + var (httpResponse, _) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + } + + [Fact] + public async Task When_page_number_equals_maximum_it_must_succeed() + { + // Arrange + const int pageNumber = _maximumPageNumber; + var route = "/api/v1/todoItems?page[number]=" + pageNumber; + + // Act + var (httpResponse, _) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + } + + [Fact] + public async Task When_page_number_is_over_maximum_it_must_fail() + { + // Arrange + const int pageNumber = _maximumPageNumber + 1; + var route = "/api/v1/todoItems?page[number]=" + pageNumber; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("The specified paging is invalid."); + responseDocument.Errors[0].Detail.Should().Be($"Page number cannot be higher than {_maximumPageNumber}."); + responseDocument.Errors[0].Source.Parameter.Should().Be("page[number]"); + } + + [Fact] + public async Task When_page_size_equals_zero_it_must_fail() + { + // Arrange + var route = "/api/v1/todoItems?page[size]=0"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("The specified paging is invalid."); + responseDocument.Errors[0].Detail.Should().Be("Page size cannot be unconstrained."); + responseDocument.Errors[0].Source.Parameter.Should().Be("page[size]"); + } + + [Fact] + public async Task When_page_size_is_below_maximum_it_must_succeed() + { + // Arrange + const int pageSize = _maximumPageSize - 1; + var route = "/api/v1/todoItems?page[size]=" + pageSize; + + // Act + var (httpResponse, _) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + } + + [Fact] + public async Task When_page_size_equals_maximum_it_must_succeed() + { + // Arrange + const int pageSize = _maximumPageSize; + var route = "/api/v1/todoItems?page[size]=" + pageSize; + + // Act + var (httpResponse, _) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + } + + [Fact] + public async Task When_page_size_is_over_maximum_it_must_fail() + { + // Arrange + const int pageSize = _maximumPageSize + 1; + var route = "/api/v1/todoItems?page[size]=" + pageSize; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("The specified paging is invalid."); + responseDocument.Errors[0].Detail.Should().Be($"Page size cannot be higher than {_maximumPageSize}."); + responseDocument.Errors[0].Source.Parameter.Should().Be("page[size]"); + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/QueryStrings/QueryStringTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/QueryStrings/QueryStringTests.cs new file mode 100644 index 0000000..7fe1859 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/QueryStrings/QueryStringTests.cs @@ -0,0 +1,87 @@ +using System.Net; +using System.Threading.Tasks; +using FluentAssertions; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Serialization.Objects; +using Microsoft.Extensions.DependencyInjection; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.QueryStrings +{ + public sealed class QueryStringTests : IClassFixture> + { + private readonly IntegrationTestContext _testContext; + + public QueryStringTests(IntegrationTestContext testContext) + { + _testContext = testContext; + } + + [Fact] + public async Task Cannot_use_unknown_query_string_parameter() + { + // Arrange + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.AllowUnknownQueryStringParameters = false; + + var route = "/api/v1/articles?foo=bar"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("Unknown query string parameter."); + responseDocument.Errors[0].Detail.Should().Be("Query string parameter 'foo' is unknown. Set 'AllowUnknownQueryStringParameters' to 'true' in options to ignore unknown parameters."); + responseDocument.Errors[0].Source.Parameter.Should().Be("foo"); + } + + [Fact] + public async Task Can_use_unknown_query_string_parameter() + { + // Arrange + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.AllowUnknownQueryStringParameters = true; + + var route = "/api/v1/articles?foo=bar"; + + // Act + var (httpResponse, _) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + } + + [Theory] + [InlineData("include")] + [InlineData("filter")] + [InlineData("sort")] + [InlineData("page")] + [InlineData("fields")] + [InlineData("defaults")] + [InlineData("nulls")] + public async Task Cannot_use_empty_query_string_parameter_value(string parameterName) + { + // Arrange + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.AllowUnknownQueryStringParameters = false; + + var route = "/api/v1/articles?" + parameterName + "="; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("Missing query string parameter value."); + responseDocument.Errors[0].Detail.Should().Be($"Missing value for '{parameterName}' query string parameter."); + responseDocument.Errors[0].Source.Parameter.Should().Be(parameterName); + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/Creating/CreateResourceTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/Creating/CreateResourceTests.cs new file mode 100644 index 0000000..62eaf4d --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/Creating/CreateResourceTests.cs @@ -0,0 +1,628 @@ +using System.Net; +using System.Threading.Tasks; +using FluentAssertions; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Serialization.Objects; +using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite.Creating +{ + public sealed class CreateResourceTests + : IClassFixture> + { + private readonly IntegrationTestContext _testContext; + private readonly WriteFakers _fakers = new WriteFakers(); + + public CreateResourceTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + _testContext.RegisterResources(builder => + { + builder.Add(); + builder.Add(); + }); + + _testContext.ConfigureServicesAfterStartup(services => + { + services.AddResourceRepository>(); + services.AddResourceRepository>(); + }); + + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.UseRelativeLinks = false; + options.AllowClientGeneratedIds = false; + } + + [Fact] + public async Task Sets_location_header_for_created_resource() + { + // Arrange + var newWorkItem = _fakers.WorkItem.Generate(); + + var requestBody = new + { + data = new + { + type = "workItems", + attributes = new + { + description = newWorkItem.Description + } + } + }; + + var route = "/workItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.Created); + + var newWorkItemId = responseDocument.SingleData.Id; + httpResponse.Headers.Location.Should().Be("/workItems/" + newWorkItemId); + + responseDocument.Links.Self.Should().Be("http://localhost/workItems"); + responseDocument.Links.First.Should().BeNull(); + + responseDocument.SingleData.Should().NotBeNull(); + responseDocument.SingleData.Links.Self.Should().Be("http://localhost" + httpResponse.Headers.Location); + } + + [Fact] + public async Task Can_create_resource_with_ID() + { + // Arrange + var newWorkItem = _fakers.WorkItem.Generate(); + newWorkItem.DueAt = null; + + var requestBody = new + { + data = new + { + type = "workItems", + attributes = new + { + description = newWorkItem.Description + } + } + }; + + var route = "/workItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.Created); + + responseDocument.SingleData.Should().NotBeNull(); + responseDocument.SingleData.Type.Should().Be("workItems"); + responseDocument.SingleData.Attributes["description"].Should().Be(newWorkItem.Description); + responseDocument.SingleData.Attributes["dueAt"].Should().Be(newWorkItem.DueAt); + // responseDocument.SingleData.Relationships.Should().NotBeEmpty(); + + var newWorkItemId = responseDocument.SingleData.Id; + + await _testContext.RunOnDatabaseAsync(async db => + { + var workItemInDatabase = await (await db.GetCollection(nameof(WorkItem)) + .FindAsync(Builders.Filter.Eq(w => w.Id, newWorkItemId))) + .FirstAsync(); + + workItemInDatabase.Description.Should().Be(newWorkItem.Description); + workItemInDatabase.DueAt.Should().Be(newWorkItem.DueAt); + }); + + var property = typeof(WorkItem).GetProperty(nameof(Identifiable.Id)); + property.Should().NotBeNull().And.Subject.PropertyType.Should().Be(typeof(string)); + } + + // [Fact] + // public async Task Can_create_resource_without_attributes_or_relationships() + // { + // // Arrange + // var requestBody = new + // { + // data = new + // { + // type = "workItems", + // attributes = new + // { + // }, + // relationship = new + // { + // } + // } + // }; + // + // var route = "/workItems"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.Created); + // + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Type.Should().Be("workItems"); + // responseDocument.SingleData.Attributes["description"].Should().BeNull(); + // responseDocument.SingleData.Attributes["dueAt"].Should().BeNull(); + // responseDocument.SingleData.Relationships.Should().NotBeEmpty(); + // + // var newWorkItemId = int.Parse(responseDocument.SingleData.Id); + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // var workItemInDatabase = await dbContext.WorkItems + // .FirstAsync(workItem => workItem.Id == newWorkItemId); + // + // workItemInDatabase.Description.Should().BeNull(); + // workItemInDatabase.DueAt.Should().BeNull(); + // }); + // } + + [Fact] + public async Task Can_create_resource_with_unknown_attribute() + { + // Arrange + var newWorkItem = _fakers.WorkItem.Generate(); + + var requestBody = new + { + data = new + { + type = "workItems", + attributes = new + { + doesNotExist = "ignored", + description = newWorkItem.Description + } + } + }; + + var route = "/workItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.Created); + + responseDocument.SingleData.Should().NotBeNull(); + responseDocument.SingleData.Type.Should().Be("workItems"); + responseDocument.SingleData.Attributes["description"].Should().Be(newWorkItem.Description); + // responseDocument.SingleData.Relationships.Should().NotBeEmpty(); + + var newWorkItemId = responseDocument.SingleData.Id; + + await _testContext.RunOnDatabaseAsync(async db => + { + var workItemInDatabase = await (await db.GetCollection(nameof(WorkItem)) + .FindAsync(Builders.Filter.Eq(workItem => workItem.Id, newWorkItemId))) + .FirstAsync(); + + workItemInDatabase.Description.Should().Be(newWorkItem.Description); + }); + } + + [Fact] + public async Task Can_create_resource_with_unknown_relationship() + { + // Arrange + var requestBody = new + { + data = new + { + type = "workItems", + relationships = new + { + doesNotExist = new + { + data = new + { + type = "doesNotExist", + id = 12345678 + } + } + } + } + }; + + var route = "/workItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.Created); + + responseDocument.SingleData.Should().NotBeNull(); + responseDocument.SingleData.Type.Should().Be("workItems"); + responseDocument.SingleData.Attributes.Should().NotBeEmpty(); + // responseDocument.SingleData.Relationships.Should().NotBeEmpty(); + + var newWorkItemId = responseDocument.SingleData.Id; + + await _testContext.RunOnDatabaseAsync(async db => + { + var workItemInDatabase = await (await db.GetCollection(nameof(WorkItem)) + .FindAsync(Builders.Filter.Eq(workItem => workItem.Id, newWorkItemId))) + .FirstOrDefaultAsync(); + + workItemInDatabase.Should().NotBeNull(); + }); + } + + [Fact] + public async Task Cannot_create_resource_with_client_generated_ID() + { + // Arrange + var requestBody = new + { + data = new + { + type = "rgbColors", + id = "0A0B0C", + attributes = new + { + name = "Black" + } + } + }; + + var route = "/rgbColors"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.Forbidden); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.Forbidden); + responseDocument.Errors[0].Title.Should().Be("Specifying the resource ID in POST requests is not allowed."); + responseDocument.Errors[0].Detail.Should().BeNull(); + responseDocument.Errors[0].Source.Pointer.Should().Be("/data/id"); + } + + [Fact] + public async Task Cannot_create_resource_for_missing_request_body() + { + // Arrange + var requestBody = string.Empty; + + var route = "/workItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("Missing request body."); + responseDocument.Errors[0].Detail.Should().BeNull(); + } + + [Fact] + public async Task Cannot_create_resource_for_missing_type() + { + // Arrange + var requestBody = new + { + data = new + { + attributes = new + { + } + } + }; + + var route = "/workItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.UnprocessableEntity); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity); + responseDocument.Errors[0].Title.Should().Be("Failed to deserialize request body: Request body must include 'type' element."); + responseDocument.Errors[0].Detail.Should().StartWith("Expected 'type' element in 'data' element. - Request body: <<"); + } + + [Fact] + public async Task Cannot_create_resource_for_unknown_type() + { + // Arrange + var requestBody = new + { + data = new + { + type = "doesNotExist", + attributes = new + { + } + } + }; + + var route = "/workItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.UnprocessableEntity); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity); + responseDocument.Errors[0].Title.Should().Be("Failed to deserialize request body: Request body includes unknown resource type."); + responseDocument.Errors[0].Detail.Should().StartWith("Resource type 'doesNotExist' does not exist. - Request body: <<"); + } + + [Fact] + public async Task Cannot_create_resource_on_unknown_resource_type_in_url() + { + // Arrange + var requestBody = new + { + data = new + { + type = "workItems", + attributes = new + { + } + } + }; + + var route = "/doesNotExist"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.NotFound); + + responseDocument.Should().BeEmpty(); + } + + [Fact] + public async Task Cannot_create_on_resource_type_mismatch_between_url_and_body() + { + // Arrange + var requestBody = new + { + data = new + { + type = "rgbColors", + id = "0A0B0C" + } + }; + var route = "/workItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.Conflict); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.Conflict); + responseDocument.Errors[0].Title.Should().Be("Resource type mismatch between request body and endpoint URL."); + responseDocument.Errors[0].Detail.Should().Be("Expected resource of type 'workItems' in POST request body at endpoint '/workItems', instead of 'rgbColors'."); + } + + [Fact] + public async Task Cannot_create_resource_attribute_with_blocked_capability() + { + // Arrange + var requestBody = new + { + data = new + { + type = "workItems", + attributes = new + { + concurrencyToken = "274E1D9A-91BE-4A42-B648-CA75E8B2945E" + } + } + }; + + var route = "/workItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.UnprocessableEntity); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity); + responseDocument.Errors[0].Title.Should().Be("Failed to deserialize request body: Setting the initial value of the requested attribute is not allowed."); + responseDocument.Errors[0].Detail.Should().StartWith("Setting the initial value of 'concurrencyToken' is not allowed. - Request body:"); + } + + // [Fact] + // public async Task Cannot_create_resource_with_readonly_attribute() + // { + // // Arrange + // var requestBody = new + // { + // data = new + // { + // type = "workItemGroups", + // attributes = new + // { + // concurrencyToken = "274E1D9A-91BE-4A42-B648-CA75E8B2945E" + // } + // } + // }; + // + // var route = "/workItemGroups"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.UnprocessableEntity); + // + // responseDocument.Errors.Should().HaveCount(1); + // responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity); + // responseDocument.Errors[0].Title.Should().Be("Failed to deserialize request body: Attribute is read-only."); + // responseDocument.Errors[0].Detail.Should().StartWith("Attribute 'concurrencyToken' is read-only. - Request body:"); + // } + + [Fact] + public async Task Cannot_create_resource_for_broken_JSON_request_body() + { + // Arrange + var requestBody = "{ \"data\" {"; + + var route = "/workItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.UnprocessableEntity); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity); + responseDocument.Errors[0].Title.Should().Be("Failed to deserialize request body."); + responseDocument.Errors[0].Detail.Should().StartWith("Invalid character after parsing"); + } + + [Fact] + public async Task Cannot_create_resource_with_incompatible_attribute_value() + { + // Arrange + var requestBody = new + { + data = new + { + type = "workItems", + attributes = new + { + dueAt = "not-a-valid-time" + } + } + }; + + var route = "/workItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.UnprocessableEntity); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity); + responseDocument.Errors[0].Title.Should().Be("Failed to deserialize request body."); + responseDocument.Errors[0].Detail.Should().StartWith("Failed to convert 'not-a-valid-time' of type 'String' to type 'Nullable`1'. - Request body: <<"); + } + + //[Fact] + //public async Task Can_create_resource_with_attributes_and_multiple_relationship_types() + //{ + //// Arrange + //var existingUserAccounts = _fakers.UserAccount.Generate(2); + //var existingTag = _fakers.WorkTag.Generate(); + + //var newDescription = _fakers.WorkItem.Generate().Description; + + //await _testContext.RunOnDatabaseAsync(async db => + //{ + //await db.GetCollection(nameof(UserAccount)).InsertManyAsync(existingUserAccounts); + //await db.GetCollection(nameof(WorkTag)).InsertOneAsync(existingTag); + //}); + + //var requestBody = new + //{ + //data = new + //{ + //type = "workItems", + //attributes = new + //{ + //description = newDescription + //}, + //relationships = new + //{ + //assignee = new + //{ + //data = new + //{ + //type = "userAccounts", + //id = existingUserAccounts[0].StringId + //} + //}, + //subscribers = new + //{ + //data = new[] + //{ + //new + //{ + //type = "userAccounts", + //id = existingUserAccounts[1].StringId + //} + //} + //}, + //tags = new + //{ + //data = new[] + //{ + //new + //{ + //type = "workTags", + //id = existingTag.StringId + //} + //} + //} + //} + //} + //}; + + //var route = "/workItems"; + + //// Act + //var (httpResponse, responseDocument) = await _testContext.ExecutePostAsync(route, requestBody); + + //// Assert + //httpResponse.Should().HaveStatusCode(HttpStatusCode.Created); + + //responseDocument.SingleData.Should().NotBeNull(); + //responseDocument.SingleData.Attributes["description"].Should().Be(newDescription); + //responseDocument.SingleData.Relationships.Should().NotBeEmpty(); + + //var newWorkItemId = int.Parse(responseDocument.SingleData.Id); + + //await _testContext.RunOnDatabaseAsync(async dbContext => + //{ + //var workItemInDatabase = await dbContext.WorkItems + //.Include(workItem => workItem.Assignee) + //.Include(workItem => workItem.Subscribers) + //.Include(workItem => workItem.WorkItemTags) + //.ThenInclude(workItemTag => workItemTag.Tag) + //.FirstAsync(workItem => workItem.Id == newWorkItemId); + + //workItemInDatabase.Description.Should().Be(newDescription); + + //workItemInDatabase.Assignee.Should().NotBeNull(); + //workItemInDatabase.Assignee.Id.Should().Be(existingUserAccounts[0].Id); + + //workItemInDatabase.Subscribers.Should().HaveCount(1); + //workItemInDatabase.Subscribers.Single().Id.Should().Be(existingUserAccounts[1].Id); + + //workItemInDatabase.WorkItemTags.Should().HaveCount(1); + //workItemInDatabase.WorkItemTags.Single().Tag.Id.Should().Be(existingTag.Id); + //}); + //} + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/Deleting/DeleteResourceTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/Deleting/DeleteResourceTests.cs new file mode 100644 index 0000000..ae10855 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/Deleting/DeleteResourceTests.cs @@ -0,0 +1,228 @@ +using System.Net; +using System.Threading.Tasks; +using FluentAssertions; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Serialization.Objects; +using MongoDB.Driver; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite.Deleting +{ + public sealed class DeleteResourceTests + : IClassFixture> + { + private readonly IntegrationTestContext _testContext; + private readonly WriteFakers _fakers = new WriteFakers(); + + public DeleteResourceTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + _testContext.RegisterResources(builder => + { + builder.Add(); + }); + + _testContext.ConfigureServicesAfterStartup(services => + { + services.AddResourceRepository>(); + }); + } + + [Fact] + public async Task Can_delete_existing_resource() + { + // Arrange + var existingWorkItem = _fakers.WorkItem.Generate(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + + var route = "/workItems/" + existingWorkItem.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteDeleteAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); + + responseDocument.Should().BeEmpty(); + + await _testContext.RunOnDatabaseAsync(async db => + { + var workItemsInDatabase = await (await db.GetCollection(nameof(WorkItem)) + .FindAsync(Builders.Filter.Eq(workItem => workItem.Id, existingWorkItem.Id))) + .FirstOrDefaultAsync(); + + workItemsInDatabase.Should().BeNull(); + }); + } + + [Fact] + public async Task Cannot_delete_missing_resource() + { + // Arrange + var route = "/workItems/5f88857c4aa60defec6a4999"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteDeleteAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.NotFound); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.NotFound); + responseDocument.Errors[0].Title.Should().Be("The requested resource does not exist."); + responseDocument.Errors[0].Detail.Should().Be("Resource of type 'workItems' with ID '5f88857c4aa60defec6a4999' does not exist."); + } + + // [Fact] + // public async Task Can_delete_resource_with_OneToOne_relationship_from_dependent_side() + // { + // // Arrange + // var existingColor = _fakers.RgbColor.Generate(); + // existingColor.Group = _fakers.WorkItemGroup.Generate(); + + // await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(RgbColor)).InsertOneAsync(existingColor)); + + // var route = "/rgbColors/" + existingColor.StringId; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteDeleteAsync(route); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); + + // responseDocument.Should().BeEmpty(); + + // await _testContext.RunOnDatabaseAsync(async db => + // { + // var colorsInDatabase = await (await db.GetCollection(nameof(RgbColor)) + // .FindAsync(Builders.Filter.Eq(color => color.Id, existingColor.Id))) + // .FirstOrDefaultAsync(); + + // colorsInDatabase.Should().BeNull(); + + // var groupInDatabase = await (await db.GetCollection(nameof(WorkItemGroup)) + // .FindAsync(Builders.Filter.Eq(group => group.Id, existingColor.Group.Id))) + // .FirstAsync(); + + // groupInDatabase.Color.Should().BeNull(); + // }); + // } + + // [Fact] + // public async Task Can_delete_existing_resource_with_OneToOne_relationship_from_principal_side() + // { + // // Arrange + // var existingGroup = _fakers.WorkItemGroup.Generate(); + // existingGroup.Color = _fakers.RgbColor.Generate(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Groups.Add(existingGroup); + // await dbContext.SaveChangesAsync(); + // }); + + // var route = "/workItemGroups/" + existingGroup.StringId; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteDeleteAsync(route); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); + + // responseDocument.Should().BeEmpty(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // var groupsInDatabase = await dbContext.Groups + // .FirstOrDefaultAsync(group => group.Id == existingGroup.Id); + + // groupsInDatabase.Should().BeNull(); + + // var colorInDatabase = await dbContext.RgbColors + // .FirstOrDefaultAsync(color => color.Id == existingGroup.Color.Id); + + // colorInDatabase.Should().NotBeNull(); + // colorInDatabase.Group.Should().BeNull(); + // }); + // } + + // [Fact] + // public async Task Can_delete_existing_resource_with_HasMany_relationship() + // { + // // Arrange + // var existingWorkItem = _fakers.WorkItem.Generate(); + // existingWorkItem.Subscribers = _fakers.UserAccount.Generate(2).ToHashSet(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.WorkItems.Add(existingWorkItem); + // await dbContext.SaveChangesAsync(); + // }); + + // var route = "/workItems/" + existingWorkItem.StringId; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteDeleteAsync(route); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); + + // responseDocument.Should().BeEmpty(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // var workItemInDatabase = await dbContext.WorkItems + // .FirstOrDefaultAsync(workItem => workItem.Id == existingWorkItem.Id); + + // workItemInDatabase.Should().BeNull(); + + // var userAccountsInDatabase = await dbContext.UserAccounts.ToListAsync(); + + // userAccountsInDatabase.Should().ContainSingle(userAccount => userAccount.Id == existingWorkItem.Subscribers.ElementAt(0).Id); + // userAccountsInDatabase.Should().ContainSingle(userAccount => userAccount.Id == existingWorkItem.Subscribers.ElementAt(1).Id); + // }); + // } + + // [Fact] + // public async Task Can_delete_resource_with_HasManyThrough_relationship() + // { + // // Arrange + // var existingWorkItemTag = new WorkItemTag + // { + // Item = _fakers.WorkItem.Generate(), + // Tag = _fakers.WorkTag.Generate() + // }; + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.WorkItemTags.Add(existingWorkItemTag); + // await dbContext.SaveChangesAsync(); + // }); + + // var route = "/workItems/" + existingWorkItemTag.Item.StringId; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteDeleteAsync(route); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); + + // responseDocument.Should().BeEmpty(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // var workItemsInDatabase = await dbContext.WorkItems + // .FirstOrDefaultAsync(workItem => workItem.Id == existingWorkItemTag.Item.Id); + + // workItemsInDatabase.Should().BeNull(); + + // var workItemTagsInDatabase = await dbContext.WorkItemTags + // .FirstOrDefaultAsync(workItemTag => workItemTag.Item.Id == existingWorkItemTag.Item.Id); + + // workItemTagsInDatabase.Should().BeNull(); + // }); + // } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/Fetching/FetchResourceTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/Fetching/FetchResourceTests.cs new file mode 100644 index 0000000..031f44e --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/Fetching/FetchResourceTests.cs @@ -0,0 +1,386 @@ +using System.Linq; +using System.Net; +using System.Threading.Tasks; +using FluentAssertions; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Serialization.Objects; +using MongoDB.Driver; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite.Fetching +{ + public sealed class FetchResourceTests + : IClassFixture> + { + private readonly IntegrationTestContext _testContext; + private readonly WriteFakers _fakers = new WriteFakers(); + + public FetchResourceTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + _testContext.RegisterResources(builder => + { + builder.Add(); + }); + + _testContext.ConfigureServicesAfterStartup(services => + { + services.AddResourceRepository>(); + }); + } + + [Fact] + public async Task Can_get_primary_resources() + { + // Arrange + var workItems = _fakers.WorkItem.Generate(2); + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(WorkItem)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(workItems); + }); + + var route = "/workItems"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(2); + + var item1 = responseDocument.ManyData.Single(resource => resource.Id == workItems[0].StringId); + item1.Type.Should().Be("workItems"); + item1.Attributes["description"].Should().Be(workItems[0].Description); + item1.Attributes["dueAt"].Should().BeCloseTo(workItems[0].DueAt); + item1.Attributes["priority"].Should().Be(workItems[0].Priority.ToString("G")); + // item1.Relationships.Should().NotBeEmpty(); + + var item2 = responseDocument.ManyData.Single(resource => resource.Id == workItems[1].StringId); + item2.Type.Should().Be("workItems"); + item2.Attributes["description"].Should().Be(workItems[1].Description); + item2.Attributes["dueAt"].Should().BeCloseTo(workItems[1].DueAt); + item2.Attributes["priority"].Should().Be(workItems[1].Priority.ToString("G")); + // item2.Relationships.Should().NotBeEmpty(); + } + + [Fact] + public async Task Cannot_get_primary_resources_for_unknown_type() + { + // Arrange + var route = "/doesNotExist"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.NotFound); + + responseDocument.Should().BeEmpty(); + } + + [Fact] + public async Task Can_get_primary_resource_by_ID() + { + // Arrange + var workItem = _fakers.WorkItem.Generate(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(workItem)); + + var route = "/workItems/" + workItem.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.SingleData.Should().NotBeNull(); + responseDocument.SingleData.Type.Should().Be("workItems"); + responseDocument.SingleData.Id.Should().Be(workItem.StringId); + responseDocument.SingleData.Attributes["description"].Should().Be(workItem.Description); + responseDocument.SingleData.Attributes["dueAt"].Should().BeCloseTo(workItem.DueAt); + responseDocument.SingleData.Attributes["priority"].Should().Be(workItem.Priority.ToString("G")); + // responseDocument.SingleData.Relationships.Should().NotBeEmpty(); + } + + [Fact] + public async Task Cannot_get_primary_resource_for_unknown_type() + { + // Arrange + var route = "/doesNotExist/5f88857c4aa60defec6a4999"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.NotFound); + + responseDocument.Should().BeEmpty(); + } + + [Fact] + public async Task Cannot_get_primary_resource_for_unknown_ID() + { + // Arrange + var route = "/workItems/5f88857c4aa60defec6a4999"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.NotFound); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.NotFound); + responseDocument.Errors[0].Title.Should().Be("The requested resource does not exist."); + responseDocument.Errors[0].Detail.Should().Be("Resource of type 'workItems' with ID '5f88857c4aa60defec6a4999' does not exist."); + } + + // [Fact] + // public async Task Can_get_secondary_HasOne_resource() + // { + // // Arrange + // var workItem = _fakers.WorkItem.Generate(); + // workItem.Assignee = _fakers.UserAccount.Generate(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.WorkItems.Add(workItem); + // await dbContext.SaveChangesAsync(); + // }); + + // var route = $"/workItems/{workItem.StringId}/assignee"; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Type.Should().Be("userAccounts"); + // responseDocument.SingleData.Id.Should().Be(workItem.Assignee.StringId); + // responseDocument.SingleData.Attributes["firstName"].Should().Be(workItem.Assignee.FirstName); + // responseDocument.SingleData.Attributes["lastName"].Should().Be(workItem.Assignee.LastName); + // responseDocument.SingleData.Relationships.Should().NotBeEmpty(); + // } + + // [Fact] + // public async Task Can_get_unknown_secondary_HasOne_resource() + // { + // // Arrange + // var workItem = _fakers.WorkItem.Generate(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.WorkItems.Add(workItem); + // await dbContext.SaveChangesAsync(); + // }); + + // var route = $"/workItems/{workItem.StringId}/assignee"; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + // responseDocument.Data.Should().BeNull(); + // } + + // [Fact] + // public async Task Can_get_secondary_HasMany_resources() + // { + // // Arrange + // var userAccount = _fakers.UserAccount.Generate(); + // userAccount.AssignedItems = _fakers.WorkItem.Generate(2).ToHashSet(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.UserAccounts.Add(userAccount); + // await dbContext.SaveChangesAsync(); + // }); + + // var route = $"/userAccounts/{userAccount.StringId}/assignedItems"; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + // responseDocument.ManyData.Should().HaveCount(2); + + // var item1 = responseDocument.ManyData.Single(resource => resource.Id == userAccount.AssignedItems.ElementAt(0).StringId); + // item1.Type.Should().Be("workItems"); + // item1.Attributes["description"].Should().Be(userAccount.AssignedItems.ElementAt(0).Description); + // item1.Attributes["dueAt"].Should().BeCloseTo(userAccount.AssignedItems.ElementAt(0).DueAt); + // item1.Attributes["priority"].Should().Be(userAccount.AssignedItems.ElementAt(0).Priority.ToString("G")); + // item1.Relationships.Should().NotBeEmpty(); + + // var item2 = responseDocument.ManyData.Single(resource => resource.Id == userAccount.AssignedItems.ElementAt(1).StringId); + // item2.Type.Should().Be("workItems"); + // item2.Attributes["description"].Should().Be(userAccount.AssignedItems.ElementAt(1).Description); + // item2.Attributes["dueAt"].Should().BeCloseTo(userAccount.AssignedItems.ElementAt(1).DueAt); + // item2.Attributes["priority"].Should().Be(userAccount.AssignedItems.ElementAt(1).Priority.ToString("G")); + // item2.Relationships.Should().NotBeEmpty(); + // } + + // [Fact] + // public async Task Can_get_unknown_secondary_HasMany_resource() + // { + // // Arrange + // var userAccount = _fakers.UserAccount.Generate(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.UserAccounts.Add(userAccount); + // await dbContext.SaveChangesAsync(); + // }); + + // var route = $"/userAccounts/{userAccount.StringId}/assignedItems"; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + // responseDocument.ManyData.Should().BeEmpty(); + // } + + // [Fact] + // public async Task Can_get_secondary_HasManyThrough_resources() + // { + // // Arrange + // var workItem = _fakers.WorkItem.Generate(); + // workItem.WorkItemTags = new List + // { + // new WorkItemTag + // { + // Tag = _fakers.WorkTag.Generate() + // }, + // new WorkItemTag + // { + // Tag = _fakers.WorkTag.Generate() + // } + // }; + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.WorkItems.Add(workItem); + // await dbContext.SaveChangesAsync(); + // }); + + // var route = $"/workItems/{workItem.StringId}/tags"; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + // responseDocument.ManyData.Should().HaveCount(2); + + // var item1 = responseDocument.ManyData.Single(resource => resource.Id == workItem.WorkItemTags.ElementAt(0).Tag.StringId); + // item1.Type.Should().Be("workTags"); + // item1.Attributes["text"].Should().Be(workItem.WorkItemTags.ElementAt(0).Tag.Text); + // item1.Attributes["isBuiltIn"].Should().Be(workItem.WorkItemTags.ElementAt(0).Tag.IsBuiltIn); + // item1.Relationships.Should().BeNull(); + + // var item2 = responseDocument.ManyData.Single(resource => resource.Id == workItem.WorkItemTags.ElementAt(1).Tag.StringId); + // item2.Type.Should().Be("workTags"); + // item2.Attributes["text"].Should().Be(workItem.WorkItemTags.ElementAt(1).Tag.Text); + // item2.Attributes["isBuiltIn"].Should().Be(workItem.WorkItemTags.ElementAt(1).Tag.IsBuiltIn); + // item2.Relationships.Should().BeNull(); + // } + + // [Fact] + // public async Task Can_get_unknown_secondary_HasManyThrough_resources() + // { + // // Arrange + // var workItem = _fakers.WorkItem.Generate(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.WorkItems.Add(workItem); + // await dbContext.SaveChangesAsync(); + // }); + + // var route = $"/workItems/{workItem.StringId}/tags"; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + // responseDocument.ManyData.Should().BeEmpty(); + // } + + // [Fact] + // public async Task Cannot_get_secondary_resource_for_unknown_primary_type() + // { + // // Arrange + // var route = "/doesNotExist/99999999/assignee"; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.NotFound); + + // responseDocument.Should().BeEmpty(); + // } + + // [Fact] + // public async Task Cannot_get_secondary_resource_for_unknown_primary_ID() + // { + // // Arrange + // var route = "/workItems/99999999/assignee"; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.NotFound); + + // responseDocument.Errors.Should().HaveCount(1); + // responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.NotFound); + // responseDocument.Errors[0].Title.Should().Be("The requested resource does not exist."); + // responseDocument.Errors[0].Detail.Should().Be("Resource of type 'workItems' with ID '99999999' does not exist."); + // } + + // [Fact] + // public async Task Cannot_get_secondary_resource_for_unknown_secondary_type() + // { + // // Arrange + // var workItem = _fakers.WorkItem.Generate(); + // workItem.Assignee = _fakers.UserAccount.Generate(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.WorkItems.Add(workItem); + // await dbContext.SaveChangesAsync(); + // }); + + // var route = $"/workItems/{workItem.StringId}/doesNotExist"; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.NotFound); + + // responseDocument.Errors.Should().HaveCount(1); + // responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.NotFound); + // responseDocument.Errors[0].Title.Should().Be("The requested relationship does not exist."); + // responseDocument.Errors[0].Detail.Should().Be("Resource of type 'workItems' does not contain a relationship named 'doesNotExist'."); + // } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/RgbColor.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/RgbColor.cs new file mode 100644 index 0000000..57a8f69 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/RgbColor.cs @@ -0,0 +1,24 @@ +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite +{ + public sealed class RgbColor : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string DisplayName { get; set; } + + [HasOne] + public WorkItemGroup Group { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/RgbColorsController.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/RgbColorsController.cs new file mode 100644 index 0000000..f32f75b --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/RgbColorsController.cs @@ -0,0 +1,16 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite +{ + public sealed class RgbColorsController : JsonApiController + { + public RgbColorsController(IJsonApiOptions options, ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/Updating/Resources/UpdateResourceTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/Updating/Resources/UpdateResourceTests.cs new file mode 100644 index 0000000..52b7473 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/Updating/Resources/UpdateResourceTests.cs @@ -0,0 +1,1111 @@ +using System; +using System.Net; +using System.Threading.Tasks; +using FluentAssertions; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Serialization.Objects; +using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite.Updating.Resources +{ + public sealed class UpdateResourceTests + : IClassFixture> + { + private readonly IntegrationTestContext _testContext; + private readonly WriteFakers _fakers = new WriteFakers(); + + public UpdateResourceTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + _testContext.RegisterResources(builder => + { + builder.Add(); + builder.Add(); + builder.Add(); + }); + + _testContext.ConfigureServicesAfterStartup(services => + { + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + }); + + var options = (JsonApiOptions) _testContext.Factory.Services.GetRequiredService(); + options.UseRelativeLinks = false; + options.AllowClientGeneratedIds = false; + } + + [Fact] + public async Task Can_update_resource_without_attributes_or_relationships() + { + // Arrange + var existingUserAccount = _fakers.UserAccount.Generate(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(UserAccount)).InsertOneAsync(existingUserAccount)); + + var requestBody = new + { + data = new + { + type = "userAccounts", + id = existingUserAccount.StringId, + attributes = new + { + }, + relationships = new + { + } + } + }; + + var route = "/userAccounts/" + existingUserAccount.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); + + responseDocument.Should().BeEmpty(); + } + + [Fact] + public async Task Can_update_resource_with_unknown_attribute() + { + // Arrange + var existingUserAccount = _fakers.UserAccount.Generate(); + var newFirstName = _fakers.UserAccount.Generate().FirstName; + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(UserAccount)).InsertOneAsync(existingUserAccount)); + + var requestBody = new + { + data = new + { + type = "userAccounts", + id = existingUserAccount.StringId, + attributes = new + { + firstName = newFirstName, + doesNotExist = "Ignored" + } + } + }; + + var route = "/userAccounts/" + existingUserAccount.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); + + responseDocument.Should().BeEmpty(); + + await _testContext.RunOnDatabaseAsync(async db => + { + var userAccountInDatabase = await (await db.GetCollection(nameof(UserAccount)) + .FindAsync(Builders.Filter.Eq(userAccount => userAccount.Id, existingUserAccount.Id))) + .FirstAsync(); + + userAccountInDatabase.FirstName.Should().Be(newFirstName); + userAccountInDatabase.LastName.Should().Be(existingUserAccount.LastName); + }); + } + + // [Fact] + // public async Task Can_update_resource_with_unknown_relationship() + // { + // // Arrange + // var existingUserAccount = _fakers.UserAccount.Generate(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.UserAccounts.Add(existingUserAccount); + // await dbContext.SaveChangesAsync(); + // }); + + // var requestBody = new + // { + // data = new + // { + // type = "userAccounts", + // id = existingUserAccount.StringId, + // relationships = new + // { + // doesNotExist = new + // { + // data = new + // { + // type = "doesNotExist", + // id = 12345678 + // } + // } + // } + // } + // }; + + // var route = "/userAccounts/" + existingUserAccount.StringId; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); + + // responseDocument.Should().BeEmpty(); + // } + + // [Fact] + // public async Task Can_partially_update_resource_with_guid_ID() + // { + // // Arrange + // var existingGroup = _fakers.WorkItemGroup.Generate(); + // var newName = _fakers.WorkItemGroup.Generate().Name; + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Groups.Add(existingGroup); + // await dbContext.SaveChangesAsync(); + // }); + + // var requestBody = new + // { + // data = new + // { + // type = "workItemGroups", + // id = existingGroup.StringId, + // attributes = new + // { + // name = newName + // } + // } + // }; + + // var route = "/workItemGroups/" + existingGroup.StringId; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Type.Should().Be("workItemGroups"); + // responseDocument.SingleData.Id.Should().Be(existingGroup.StringId); + // responseDocument.SingleData.Attributes["name"].Should().Be(newName); + // responseDocument.SingleData.Attributes["isPublic"].Should().Be(existingGroup.IsPublic); + // responseDocument.SingleData.Relationships.Should().NotBeEmpty(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // var groupInDatabase = await dbContext.Groups + // .FirstAsync(group => group.Id == existingGroup.Id); + + // groupInDatabase.Name.Should().Be(newName); + // groupInDatabase.IsPublic.Should().Be(existingGroup.IsPublic); + // }); + + // var property = typeof(WorkItemGroup).GetProperty(nameof(Identifiable.Id)); + // property.Should().NotBeNull().And.Subject.PropertyType.Should().Be(typeof(Guid)); + // } + + [Fact] + public async Task Can_completely_update_resource_with_string_ID() + { + // Arrange + var existingColor = _fakers.RgbColor.Generate(); + var newDisplayName = _fakers.RgbColor.Generate().DisplayName; + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(RgbColor)).InsertOneAsync(existingColor)); + + var requestBody = new + { + data = new + { + type = "rgbColors", + id = existingColor.StringId, + attributes = new + { + displayName = newDisplayName + } + } + }; + + var route = "/rgbColors/" + existingColor.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); + + responseDocument.Should().BeEmpty(); + + await _testContext.RunOnDatabaseAsync(async db => + { + var colorInDatabase = await (await db.GetCollection(nameof(RgbColor)) + .FindAsync(Builders.Filter.Eq(color => color.Id, existingColor.Id))) + .FirstAsync(); + + colorInDatabase.DisplayName.Should().Be(newDisplayName); + }); + + var property = typeof(RgbColor).GetProperty(nameof(Identifiable.Id)); + property.Should().NotBeNull().And.Subject.PropertyType.Should().Be(typeof(string)); + } + + [Fact] + public async Task Can_update_resource_without_side_effects() + { + // Arrange + var existingUserAccount = _fakers.UserAccount.Generate(); + var newUserAccount = _fakers.UserAccount.Generate(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(UserAccount)).InsertOneAsync(existingUserAccount)); + + var requestBody = new + { + data = new + { + type = "userAccounts", + id = existingUserAccount.StringId, + attributes = new + { + firstName = newUserAccount.FirstName, + lastName = newUserAccount.LastName + } + } + }; + + var route = "/userAccounts/" + existingUserAccount.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); + + responseDocument.Should().BeEmpty(); + + await _testContext.RunOnDatabaseAsync(async db => + { + var userAccountInDatabase = await (await db.GetCollection(nameof(UserAccount)) + .FindAsync(Builders.Filter.Eq(userAccount => userAccount.Id, existingUserAccount.Id))) + .FirstAsync(); + + userAccountInDatabase.FirstName.Should().Be(newUserAccount.FirstName); + userAccountInDatabase.LastName.Should().Be(newUserAccount.LastName); + }); + } + + [Fact] + public async Task Can_update_resource_with_side_effects() + { + // Arrange + var existingWorkItem = _fakers.WorkItem.Generate(); + var newDescription = _fakers.WorkItem.Generate().Description; + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + + var requestBody = new + { + data = new + { + type = "workItems", + id = existingWorkItem.StringId, + attributes = new + { + description = newDescription, + dueAt = (DateTime?)null + } + } + }; + + var route = "/workItems/" + existingWorkItem.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.SingleData.Should().NotBeNull(); + responseDocument.SingleData.Type.Should().Be("workItems"); + responseDocument.SingleData.Id.Should().Be(existingWorkItem.StringId); + responseDocument.SingleData.Attributes["description"].Should().Be(newDescription); + responseDocument.SingleData.Attributes["dueAt"].Should().BeNull(); + responseDocument.SingleData.Attributes["priority"].Should().Be(existingWorkItem.Priority.ToString("G")); + responseDocument.SingleData.Attributes.Should().ContainKey("concurrencyToken"); + // responseDocument.SingleData.Relationships.Should().NotBeEmpty(); + + await _testContext.RunOnDatabaseAsync(async db => + { + var workItemInDatabase = await (await db.GetCollection(nameof(WorkItem)) + .FindAsync(Builders.Filter.Eq(workItem => workItem.Id, existingWorkItem.Id))) + .FirstAsync(); + + workItemInDatabase.Description.Should().Be(newDescription); + workItemInDatabase.DueAt.Should().BeNull(); + workItemInDatabase.Priority.Should().Be(existingWorkItem.Priority); + }); + } + + [Fact] + public async Task Can_update_resource_with_side_effects_with_primary_fieldset() + { + // Arrange + var existingWorkItem = _fakers.WorkItem.Generate(); + var newDescription = _fakers.WorkItem.Generate().Description; + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + + var requestBody = new + { + data = new + { + type = "workItems", + id = existingWorkItem.StringId, + attributes = new + { + description = newDescription, + dueAt = (DateTime?)null + } + } + }; + + var route = $"/workItems/{existingWorkItem.StringId}?fields[workItems]=description,priority"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.SingleData.Should().NotBeNull(); + responseDocument.SingleData.Type.Should().Be("workItems"); + responseDocument.SingleData.Id.Should().Be(existingWorkItem.StringId); + responseDocument.SingleData.Attributes.Should().HaveCount(2); + responseDocument.SingleData.Attributes["description"].Should().Be(newDescription); + responseDocument.SingleData.Attributes["priority"].Should().Be(existingWorkItem.Priority.ToString("G")); + responseDocument.SingleData.Relationships.Should().BeNull(); + + await _testContext.RunOnDatabaseAsync(async db => + { + var workItemInDatabase = await (await db.GetCollection(nameof(WorkItem)) + .FindAsync(Builders.Filter.Eq(workItem => workItem.Id, existingWorkItem.Id))) + .FirstAsync(); + + workItemInDatabase.Description.Should().Be(newDescription); + workItemInDatabase.DueAt.Should().BeNull(); + workItemInDatabase.Priority.Should().Be(existingWorkItem.Priority); + }); + } + + // [Fact] + // public async Task Can_update_resource_with_side_effects_with_include_and_fieldsets() + // { + // // Arrange + // var existingWorkItem = _fakers.WorkItem.Generate(); + // existingWorkItem.WorkItemTags = new[] + // { + // new WorkItemTag + // { + // Tag = _fakers.WorkTag.Generate() + // } + // }; + + // var newDescription = _fakers.WorkItem.Generate().Description; + + // await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + + // var requestBody = new + // { + // data = new + // { + // type = "workItems", + // id = existingWorkItem.StringId, + // attributes = new + // { + // description = newDescription, + // dueAt = (DateTime?)null + // } + // } + // }; + + // var route = $"/workItems/{existingWorkItem.StringId}?fields[workItems]=description,priority,tags&include=tags&fields[workTags]=text"; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Type.Should().Be("workItems"); + // responseDocument.SingleData.Id.Should().Be(existingWorkItem.StringId); + // responseDocument.SingleData.Attributes.Should().HaveCount(2); + // responseDocument.SingleData.Attributes["description"].Should().Be(newDescription); + // responseDocument.SingleData.Attributes["priority"].Should().Be(existingWorkItem.Priority.ToString("G")); + // responseDocument.SingleData.Relationships.Should().HaveCount(1); + // responseDocument.SingleData.Relationships["tags"].ManyData.Should().HaveCount(1); + // responseDocument.SingleData.Relationships["tags"].ManyData[0].Id.Should().Be(existingWorkItem.WorkItemTags.Single().Tag.StringId); + + // responseDocument.Included.Should().HaveCount(1); + // responseDocument.Included[0].Type.Should().Be("workTags"); + // responseDocument.Included[0].Id.Should().Be(existingWorkItem.WorkItemTags.Single().Tag.StringId); + // responseDocument.Included[0].Attributes.Should().HaveCount(1); + // responseDocument.Included[0].Attributes["text"].Should().Be(existingWorkItem.WorkItemTags.Single().Tag.Text); + // responseDocument.Included[0].Relationships.Should().BeNull(); + + // await _testContext.RunOnDatabaseAsync(async db => + // { + // var workItemInDatabase = await (await db.GetCollection(nameof(WorkItem)) + // .FindAsync(Builders.Filter.Eq(workItem => workItem.Id, existingWorkItem.Id))) + // .FirstAsync(); + + // workItemInDatabase.Description.Should().Be(newDescription); + // workItemInDatabase.DueAt.Should().BeNull(); + // workItemInDatabase.Priority.Should().Be(existingWorkItem.Priority); + // }); + // } + + // [Fact] + // public async Task Update_resource_with_side_effects_hides_relationship_data_in_response() + // { + // // Arrange + // var existingWorkItem = _fakers.WorkItem.Generate(); + // existingWorkItem.Assignee = _fakers.UserAccount.Generate(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.WorkItems.Add(existingWorkItem); + // await dbContext.SaveChangesAsync(); + // }); + + // var requestBody = new + // { + // data = new + // { + // type = "workItems", + // id = existingWorkItem.StringId + // } + // }; + + // var route = "/workItems/" + existingWorkItem.StringId; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Relationships.Should().NotBeEmpty(); + // responseDocument.SingleData.Relationships.Values.Should().OnlyContain(relationshipEntry => relationshipEntry.Data == null); + + // responseDocument.Included.Should().BeNull(); + // } + + [Fact] + public async Task Cannot_update_resource_for_missing_request_body() + { + // Arrange + var existingWorkItem = _fakers.WorkItem.Generate(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + + var requestBody = string.Empty; + + var route = "/workItems/" + existingWorkItem.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("Missing request body."); + responseDocument.Errors[0].Detail.Should().BeNull(); + } + + [Fact] + public async Task Cannot_update_resource_for_missing_type() + { + // Arrange + var existingWorkItem = _fakers.WorkItem.Generate(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + + var requestBody = new + { + data = new + { + id = existingWorkItem.StringId + } + }; + + var route = "/workItems/" + existingWorkItem.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.UnprocessableEntity); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity); + responseDocument.Errors[0].Title.Should().Be("Failed to deserialize request body: Request body must include 'type' element."); + responseDocument.Errors[0].Detail.Should().StartWith("Expected 'type' element in 'data' element. - Request body: <<"); + } + + [Fact] + public async Task Cannot_update_resource_for_unknown_type() + { + // Arrange + var existingWorkItem = _fakers.WorkItem.Generate(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + + var requestBody = new + { + data = new + { + type = "doesNotExist", + id = existingWorkItem.StringId + } + }; + + var route = "/workItems/" + existingWorkItem.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.UnprocessableEntity); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity); + responseDocument.Errors[0].Title.Should().Be("Failed to deserialize request body: Request body includes unknown resource type."); + responseDocument.Errors[0].Detail.Should().StartWith("Resource type 'doesNotExist' does not exist. - Request body: <<"); + } + + [Fact] + public async Task Cannot_update_resource_for_missing_ID() + { + // Arrange + var existingWorkItem = _fakers.WorkItem.Generate(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + + var requestBody = new + { + data = new + { + type = "workItems" + } + }; + + var route = "/workItems/" + existingWorkItem.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.UnprocessableEntity); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity); + responseDocument.Errors[0].Title.Should().Be("Failed to deserialize request body: Request body must include 'id' element."); + responseDocument.Errors[0].Detail.Should().StartWith("Request body: <<"); + } + + [Fact] + public async Task Cannot_update_resource_on_unknown_resource_type_in_url() + { + // Arrange + var existingWorkItem = _fakers.WorkItem.Generate(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + + var requestBody = new + { + data = new + { + type = "workItems", + id = existingWorkItem.StringId + } + }; + + var route = "/doesNotExist/" + existingWorkItem.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.NotFound); + + responseDocument.Should().BeEmpty(); + } + + [Fact] + public async Task Cannot_update_resource_on_unknown_resource_ID_in_url() + { + // Arrange + var requestBody = new + { + data = new + { + type = "workItems", + id = "5f88857c4aa60defec6a4999" + } + }; + + var route = "/workItems/5f88857c4aa60defec6a4999"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.NotFound); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.NotFound); + responseDocument.Errors[0].Title.Should().Be("The requested resource does not exist."); + responseDocument.Errors[0].Detail.Should().Be("Resource of type 'workItems' with ID '5f88857c4aa60defec6a4999' does not exist."); + } + + [Fact] + public async Task Cannot_update_on_resource_type_mismatch_between_url_and_body() + { + // Arrange + var existingWorkItem = _fakers.WorkItem.Generate(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + + var requestBody = new + { + data = new + { + type = "rgbColors", + id = existingWorkItem.StringId + } + }; + + var route = "/workItems/" + existingWorkItem.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.Conflict); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.Conflict); + responseDocument.Errors[0].Title.Should().Be("Resource type mismatch between request body and endpoint URL."); + responseDocument.Errors[0].Detail.Should().Be($"Expected resource of type 'workItems' in PATCH request body at endpoint '/workItems/{existingWorkItem.StringId}', instead of 'rgbColors'."); + } + + [Fact] + public async Task Cannot_update_on_resource_ID_mismatch_between_url_and_body() + { + // Arrange + var existingWorkItems = _fakers.WorkItem.Generate(2); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertManyAsync(existingWorkItems)); + + var requestBody = new + { + data = new + { + type = "workItems", + id = existingWorkItems[0].StringId + } + }; + + var route = "/workItems/" + existingWorkItems[1].StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.Conflict); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.Conflict); + responseDocument.Errors[0].Title.Should().Be("Resource ID mismatch between request body and endpoint URL."); + responseDocument.Errors[0].Detail.Should().Be($"Expected resource ID '{existingWorkItems[1].StringId}' in PATCH request body at endpoint '/workItems/{existingWorkItems[1].StringId}', instead of '{existingWorkItems[0].StringId}'."); + } + + [Fact] + public async Task Cannot_update_resource_attribute_with_blocked_capability() + { + // Arrange + var existingWorkItem = _fakers.WorkItem.Generate(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + + var requestBody = new + { + data = new + { + type = "workItems", + id = existingWorkItem.StringId, + attributes = new + { + concurrencyToken = "274E1D9A-91BE-4A42-B648-CA75E8B2945E" + } + } + }; + + var route = "/workItems/" + existingWorkItem.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.UnprocessableEntity); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity); + responseDocument.Errors[0].Title.Should().Be("Failed to deserialize request body: Changing the value of the requested attribute is not allowed."); + responseDocument.Errors[0].Detail.Should().StartWith("Changing the value of 'concurrencyToken' is not allowed. - Request body:"); + } + + // [Fact] + // public async Task Cannot_update_resource_with_readonly_attribute() + // { + // // Arrange + // var existingWorkItem = _fakers.WorkItem.Generate(); + // + // await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + // + // var requestBody = new + // { + // data = new + // { + // type = "workItemGroups", + // id = existingWorkItem.StringId, + // attributes = new + // { + // concurrencyToken = "274E1D9A-91BE-4A42-B648-CA75E8B2945E" + // } + // } + // }; + // + // var route = "/workItemGroups/" + existingWorkItem.StringId; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.UnprocessableEntity); + // + // responseDocument.Errors.Should().HaveCount(1); + // responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity); + // responseDocument.Errors[0].Title.Should().Be("Failed to deserialize request body: Attribute is read-only."); + // responseDocument.Errors[0].Detail.Should().StartWith("Attribute 'concurrencyToken' is read-only. - Request body:"); + // } + + [Fact] + public async Task Cannot_update_resource_for_broken_JSON_request_body() + { + // Arrange + var existingWorkItem = _fakers.WorkItem.Generate(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + + var requestBody = "{ \"data\" {"; + + var route = "/workItems/" + existingWorkItem.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.UnprocessableEntity); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity); + responseDocument.Errors[0].Title.Should().Be("Failed to deserialize request body."); + responseDocument.Errors[0].Detail.Should().StartWith("Invalid character after parsing"); + } + + [Fact] + public async Task Cannot_change_ID_of_existing_resource() + { + // Arrange + var existingWorkItem = _fakers.WorkItem.Generate(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + + var requestBody = new + { + data = new + { + type = "workItems", + id = existingWorkItem.StringId, + attributes = new + { + id = existingWorkItem.Id + 123456 + } + } + }; + + var route = "/workItems/" + existingWorkItem.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.UnprocessableEntity); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity); + responseDocument.Errors[0].Title.Should().Be("Failed to deserialize request body: Resource ID is read-only."); + responseDocument.Errors[0].Detail.Should().StartWith("Resource ID is read-only. - Request body: <<"); + } + + [Fact] + public async Task Cannot_update_resource_with_incompatible_attribute_value() + { + // Arrange + var existingWorkItem = _fakers.WorkItem.Generate(); + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(WorkItem)).InsertOneAsync(existingWorkItem)); + + var requestBody = new + { + data = new + { + type = "workItems", + id = existingWorkItem.StringId, + attributes = new + { + dueAt = "not-a-valid-time" + } + } + }; + + var route = "/workItems/" + existingWorkItem.StringId; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.UnprocessableEntity); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity); + responseDocument.Errors[0].Title.Should().Be("Failed to deserialize request body."); + responseDocument.Errors[0].Detail.Should().StartWith("Failed to convert 'not-a-valid-time' of type 'String' to type 'Nullable`1'. - Request body: <<"); + } + + // [Fact] + // public async Task Can_update_resource_with_attributes_and_multiple_relationship_types() + // { + // // Arrange + // var existingWorkItem = _fakers.WorkItem.Generate(); + // existingWorkItem.Assignee = _fakers.UserAccount.Generate(); + // existingWorkItem.Subscribers = _fakers.UserAccount.Generate(1).ToHashSet(); + // existingWorkItem.WorkItemTags = new List + // { + // new WorkItemTag + // { + // Tag = _fakers.WorkTag.Generate() + // } + // }; + + // var existingUserAccounts = _fakers.UserAccount.Generate(2); + // var existingTag = _fakers.WorkTag.Generate(); + + // var newDescription = _fakers.WorkItem.Generate().Description; + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.AddRange(existingWorkItem, existingTag); + // dbContext.UserAccounts.AddRange(existingUserAccounts); + // await dbContext.SaveChangesAsync(); + // }); + + // var requestBody = new + // { + // data = new + // { + // type = "workItems", + // id = existingWorkItem.StringId, + // attributes = new + // { + // description = newDescription + // }, + // relationships = new + // { + // assignee = new + // { + // data = new + // { + // type = "userAccounts", + // id = existingUserAccounts[0].StringId + // } + // }, + // subscribers = new + // { + // data = new[] + // { + // new + // { + // type = "userAccounts", + // id = existingUserAccounts[1].StringId + // } + // } + // }, + // tags = new + // { + // data = new[] + // { + // new + // { + // type = "workTags", + // id = existingTag.StringId + // } + // } + // } + // } + // } + // }; + + // var route = "/workItems/" + existingWorkItem.StringId; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Attributes["description"].Should().Be(newDescription); + // responseDocument.SingleData.Relationships.Should().NotBeEmpty(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // var workItemInDatabase = await dbContext.WorkItems + // .Include(workItem => workItem.Assignee) + // .Include(workItem => workItem.Subscribers) + // .Include(workItem => workItem.WorkItemTags) + // .ThenInclude(workItemTag => workItemTag.Tag) + // .FirstAsync(workItem => workItem.Id == existingWorkItem.Id); + + // workItemInDatabase.Description.Should().Be(newDescription); + + // workItemInDatabase.Assignee.Should().NotBeNull(); + // workItemInDatabase.Assignee.Id.Should().Be(existingUserAccounts[0].Id); + + // workItemInDatabase.Subscribers.Should().HaveCount(1); + // workItemInDatabase.Subscribers.Single().Id.Should().Be(existingUserAccounts[1].Id); + + // workItemInDatabase.WorkItemTags.Should().HaveCount(1); + // workItemInDatabase.WorkItemTags.Single().Tag.Id.Should().Be(existingTag.Id); + // }); + // } + + // [Fact] + // public async Task Can_update_resource_with_multiple_cyclic_relationship_types() + // { + // // Arrange + // var existingWorkItem = _fakers.WorkItem.Generate(); + // existingWorkItem.Parent = _fakers.WorkItem.Generate(); + // existingWorkItem.Children = _fakers.WorkItem.Generate(1); + // existingWorkItem.RelatedToItems = new List + // { + // new WorkItemToWorkItem + // { + // ToItem = _fakers.WorkItem.Generate() + // } + // }; + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.WorkItems.Add(existingWorkItem); + // await dbContext.SaveChangesAsync(); + // }); + + // var requestBody = new + // { + // data = new + // { + // type = "workItems", + // id = existingWorkItem.StringId, + // relationships = new + // { + // parent = new + // { + // data = new + // { + // type = "workItems", + // id = existingWorkItem.StringId + // } + // }, + // children = new + // { + // data = new[] + // { + // new + // { + // type = "workItems", + // id = existingWorkItem.StringId + // } + // } + // }, + // relatedTo = new + // { + // data = new[] + // { + // new + // { + // type = "workItems", + // id = existingWorkItem.StringId + // } + // } + // } + // } + // } + // }; + + // var route = "/workItems/" + existingWorkItem.StringId; + + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecutePatchAsync(route, requestBody); + + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + // responseDocument.SingleData.Should().NotBeNull(); + + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // var workItemInDatabase = await dbContext.WorkItems + // .Include(workItem => workItem.Parent) + // .Include(workItem => workItem.Children) + // .Include(workItem => workItem.RelatedToItems) + // .ThenInclude(workItemToWorkItem => workItemToWorkItem.ToItem) + // .FirstAsync(workItem => workItem.Id == existingWorkItem.Id); + + // workItemInDatabase.Parent.Should().NotBeNull(); + // workItemInDatabase.Parent.Id.Should().Be(existingWorkItem.Id); + + // workItemInDatabase.Children.Should().HaveCount(1); + // workItemInDatabase.Children.Single().Id.Should().Be(existingWorkItem.Id); + + // workItemInDatabase.RelatedToItems.Should().HaveCount(1); + // workItemInDatabase.RelatedToItems.Single().ToItem.Id.Should().Be(existingWorkItem.Id); + // }); + // } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/UserAccount.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/UserAccount.cs new file mode 100644 index 0000000..4b72a9c --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/UserAccount.cs @@ -0,0 +1,27 @@ +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite +{ + public sealed class UserAccount : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string FirstName { get; set; } + + [Attr] + public string LastName { get; set; } + + // [HasMany] + // public ISet AssignedItems { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/UserAccountsController.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/UserAccountsController.cs new file mode 100644 index 0000000..cce8bf3 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/UserAccountsController.cs @@ -0,0 +1,16 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite +{ + public sealed class UserAccountsController : JsonApiController + { + public UserAccountsController(IJsonApiOptions options, ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItem.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItem.cs new file mode 100644 index 0000000..1a3ea9a --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItem.cs @@ -0,0 +1,66 @@ +using System; +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite +{ + public sealed class WorkItem : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string Description { get; set; } + + [Attr] + public DateTimeOffset? DueAt { get; set; } + + [Attr] + public WorkItemPriority Priority { get; set; } + + [BsonIgnore] + [Attr(Capabilities = ~(AttrCapabilities.AllowCreate | AttrCapabilities.AllowChange))] + public Guid ConcurrencyToken + { + get => Guid.NewGuid(); + set { } + } + + // [HasOne] + // public UserAccount Assignee { get; set; } + + // [HasMany] + // public ISet Subscribers { get; set; } + + // [NotMapped] + // [HasManyThrough(nameof(WorkItemTags))] + // public ISet Tags { get; set; } + // public ICollection WorkItemTags { get; set; } + + // [HasOne] + // public WorkItem Parent { get; set; } + + // [HasMany] + // public IList Children { get; set; } + + // [NotMapped] + // [HasManyThrough(nameof(RelatedFromItems), LeftPropertyName = nameof(WorkItemToWorkItem.ToItem), RightPropertyName = nameof(WorkItemToWorkItem.FromItem))] + // public IList RelatedFrom { get; set; } + // public IList RelatedFromItems { get; set; } + + // [NotMapped] + // [HasManyThrough(nameof(RelatedToItems), LeftPropertyName = nameof(WorkItemToWorkItem.FromItem), RightPropertyName = nameof(WorkItemToWorkItem.ToItem))] + // public IList RelatedTo { get; set; } + // public IList RelatedToItems { get; set; } + + // [HasOne] + // public WorkItemGroup Group { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemGroup.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemGroup.cs new file mode 100644 index 0000000..a8c06c0 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemGroup.cs @@ -0,0 +1,34 @@ +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite +{ + public sealed class WorkItemGroup : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string Name { get; set; } + + [Attr] + public bool IsPublic { get; set; } + + // [NotMapped] + // [Attr] + // public Guid ConcurrencyToken => Guid.NewGuid(); + + // [HasOne] + // public RgbColor Color { get; set; } + + // [HasMany] + // public IList Items { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemGroupsController.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemGroupsController.cs new file mode 100644 index 0000000..6466ff9 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemGroupsController.cs @@ -0,0 +1,17 @@ +using System; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite +{ + public sealed class WorkItemGroupsController : JsonApiController + { + public WorkItemGroupsController(IJsonApiOptions options, ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemPriority.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemPriority.cs new file mode 100644 index 0000000..cfce1a8 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemPriority.cs @@ -0,0 +1,9 @@ +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite +{ + public enum WorkItemPriority + { + Low, + Medium, + High + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemTag.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemTag.cs new file mode 100644 index 0000000..3e35242 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemTag.cs @@ -0,0 +1,11 @@ +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite +{ + public sealed class WorkItemTag + { + public WorkItem Item { get; set; } + public int ItemId { get; set; } + + public WorkTag Tag { get; set; } + public int TagId { get; set; } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemToWorkItem.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemToWorkItem.cs new file mode 100644 index 0000000..2470694 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemToWorkItem.cs @@ -0,0 +1,11 @@ +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite +{ + public sealed class WorkItemToWorkItem + { + public WorkItem FromItem { get; set; } + public int FromItemId { get; set; } + + public WorkItem ToItem { get; set; } + public int ToItemId { get; set; } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemsController.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemsController.cs new file mode 100644 index 0000000..4032785 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkItemsController.cs @@ -0,0 +1,16 @@ +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.Services; +using Microsoft.Extensions.Logging; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite +{ + public sealed class WorkItemsController : JsonApiController + { + public WorkItemsController(IJsonApiOptions options, ILoggerFactory loggerFactory, + IResourceService resourceService) + : base(options, loggerFactory, resourceService) + { + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkTag.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkTag.cs new file mode 100644 index 0000000..f296de7 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WorkTag.cs @@ -0,0 +1,24 @@ +using JsonApiDotNetCore.Resources; +using JsonApiDotNetCore.Resources.Annotations; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite +{ + public sealed class WorkTag : IIdentifiable + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + [Attr] + public string Id { get; set; } + + [Attr] + public string Text { get; set; } + + [Attr] + public bool IsBuiltIn { get; set; } + + [BsonIgnore] + public string StringId { get => Id; set => Id = value; } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WriteFakers.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WriteFakers.cs new file mode 100644 index 0000000..835f8d2 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/ReadWrite/WriteFakers.cs @@ -0,0 +1,44 @@ +using System; +using Bogus; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.ReadWrite +{ + internal sealed class WriteFakers : FakerContainer + { + private readonly Lazy> _lazyWorkItemFaker = new Lazy>(() => + new Faker() + .UseSeed(GetFakerSeed()) + .RuleFor(workItem => workItem.Description, f => f.Lorem.Sentence()) + .RuleFor(workItem => workItem.DueAt, f => f.Date.Future()) + .RuleFor(workItem => workItem.Priority, f => f.PickRandom())); + + private readonly Lazy> _lazyWorkTagFaker = new Lazy>(() => + new Faker() + .UseSeed(GetFakerSeed()) + .RuleFor(workTag => workTag.Text, f => f.Lorem.Word()) + .RuleFor(workTag => workTag.IsBuiltIn, f => f.Random.Bool())); + + private readonly Lazy> _lazyUserAccountFaker = new Lazy>(() => + new Faker() + .UseSeed(GetFakerSeed()) + .RuleFor(userAccount => userAccount.FirstName, f => f.Name.FirstName()) + .RuleFor(userAccount => userAccount.LastName, f => f.Name.LastName())); + + private readonly Lazy> _lazyWorkItemGroupFaker = new Lazy>(() => + new Faker() + .UseSeed(GetFakerSeed()) + .RuleFor(group => group.Name, f => f.Lorem.Word()) + .RuleFor(group => group.IsPublic, f => f.Random.Bool())); + + private readonly Lazy> _lazyRgbColorFaker = new Lazy>(() => + new Faker() + .UseSeed(GetFakerSeed()) + .RuleFor(color => color.DisplayName, f => f.Lorem.Word())); + + public Faker WorkItem => _lazyWorkItemFaker.Value; + public Faker WorkTag => _lazyWorkTagFaker.Value; + public Faker UserAccount => _lazyUserAccountFaker.Value; + public Faker WorkItemGroup => _lazyWorkItemGroupFaker.Value; + public Faker RgbColor => _lazyRgbColorFaker.Value; + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Sorting/SortTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Sorting/SortTests.cs new file mode 100644 index 0000000..1a66bad --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/Sorting/SortTests.cs @@ -0,0 +1,739 @@ +using System.Collections.Generic; +using System.Net; +using System.Threading.Tasks; +using FluentAssertions; +using JsonApiDotNetCore.Serialization.Objects; +using JsonApiDotNetCore.MongoDb.Example.Models; +using MongoDB.Driver; +using Xunit; +using Person = JsonApiDotNetCore.MongoDb.Example.Models.Person; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.Sorting +{ + public sealed class SortTests : IClassFixture> + { + private readonly IntegrationTestContext _testContext; + // private readonly Faker
_articleFaker; + // private readonly Faker _authorFaker; + + public SortTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + // _articleFaker = new Faker
() + // .RuleFor(a => a.Caption, f => f.Random.AlphaNumeric(10)); + // + // _authorFaker = new Faker() + // .RuleFor(a => a.LastName, f => f.Random.Words(2)); + } + + [Fact] + public async Task Can_sort_in_primary_resources() + { + // Arrange + var articles = new List
+ { + new Article {Caption = "B"}, + new Article {Caption = "A"}, + new Article {Caption = "C"} + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection
(nameof(Article)); + await collection.DeleteManyAsync(Builders
.Filter.Empty); + await collection.InsertManyAsync(articles); + }); + + var route = "/api/v1/articles?sort=caption"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(3); + responseDocument.ManyData[0].Id.Should().Be(articles[1].StringId); + responseDocument.ManyData[1].Id.Should().Be(articles[0].StringId); + responseDocument.ManyData[2].Id.Should().Be(articles[2].StringId); + } + + [Fact] + public async Task Cannot_sort_in_single_primary_resource() + { + // Arrange + var article = new Article + { + Caption = "X" + }; + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection
(nameof(Article)).InsertOneAsync(article)); + + var route = $"/api/v1/articles/{article.StringId}?sort=id"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("The specified sort is invalid."); + responseDocument.Errors[0].Detail.Should().Be("This query string parameter can only be used on a collection of resources (not on a single resource)."); + responseDocument.Errors[0].Source.Parameter.Should().Be("sort"); + } + + // [Fact] + // public async Task Can_sort_in_secondary_resources() + // { + // // Arrange + // var blog = new Blog + // { + // Articles = new List
+ // { + // new Article {Caption = "B"}, + // new Article {Caption = "A"}, + // new Article {Caption = "C"} + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/blogs/{blog.StringId}/articles?sort=caption"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(3); + // responseDocument.ManyData[0].Id.Should().Be(blog.Articles[1].StringId); + // responseDocument.ManyData[1].Id.Should().Be(blog.Articles[0].StringId); + // responseDocument.ManyData[2].Id.Should().Be(blog.Articles[2].StringId); + // } + + [Fact] + public async Task Cannot_sort_in_single_secondary_resource() + { + // Arrange + var article = new Article + { + Caption = "X" + }; + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection
(nameof(Article)).InsertOneAsync(article)); + + var route = $"/api/v1/articles/{article.StringId}/author?sort=id"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("The specified sort is invalid."); + responseDocument.Errors[0].Detail.Should().Be("This query string parameter can only be used on a collection of resources (not on a single resource)."); + responseDocument.Errors[0].Source.Parameter.Should().Be("sort"); + } + + // [Fact] + // public async Task Can_sort_on_HasMany_relationship() + // { + // // Arrange + // var blogs = new List + // { + // new Blog + // { + // Articles = new List
+ // { + // new Article + // { + // Caption = "A" + // }, + // new Article + // { + // Caption = "B" + // } + // } + // }, + // new Blog + // { + // Articles = new List
+ // { + // new Article + // { + // Caption = "C" + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync(); + // dbContext.Blogs.AddRange(blogs); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/api/v1/blogs?sort=count(articles)"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(2); + // responseDocument.ManyData[0].Id.Should().Be(blogs[1].StringId); + // responseDocument.ManyData[1].Id.Should().Be(blogs[0].StringId); + // } + + // [Fact] + // public async Task Can_sort_on_HasManyThrough_relationship() + // { + // // Arrange + // var articles = new List
+ // { + // new Article + // { + // Caption = "First", + // ArticleTags = new HashSet + // { + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "A" + // } + // } + // } + // }, + // new Article + // { + // Caption = "Second", + // ArticleTags = new HashSet + // { + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "B" + // } + // }, + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "C" + // } + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync
(); + // dbContext.Articles.AddRange(articles); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/api/v1/articles?sort=-count(tags)"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(2); + // responseDocument.ManyData[0].Id.Should().Be(articles[1].StringId); + // responseDocument.ManyData[1].Id.Should().Be(articles[0].StringId); + // } + + // [Fact] + // public async Task Can_sort_in_scope_of_HasMany_relationship() + // { + // // Arrange + // var author = _authorFaker.Generate(); + // author.Articles = new List
+ // { + // new Article {Caption = "B"}, + // new Article {Caption = "A"}, + // new Article {Caption = "C"} + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.AuthorDifferentDbContextName.Add(author); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/authors/{author.StringId}?include=articles&sort[articles]=caption"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Id.Should().Be(author.StringId); + // + // responseDocument.Included.Should().HaveCount(3); + // responseDocument.Included[0].Id.Should().Be(author.Articles[1].StringId); + // responseDocument.Included[1].Id.Should().Be(author.Articles[0].StringId); + // responseDocument.Included[2].Id.Should().Be(author.Articles[2].StringId); + // } + + // [Fact] + // public async Task Can_sort_in_scope_of_HasMany_relationship_on_secondary_resource() + // { + // // Arrange + // var blog = new Blog + // { + // Owner = new Author + // { + // LastName = "Smith", + // Articles = new List
+ // { + // new Article {Caption = "B"}, + // new Article {Caption = "A"}, + // new Article {Caption = "C"} + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/blogs/{blog.StringId}/owner?include=articles&sort[articles]=caption"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Id.Should().Be(blog.Owner.StringId); + // + // responseDocument.Included.Should().HaveCount(3); + // responseDocument.Included[0].Id.Should().Be(blog.Owner.Articles[1].StringId); + // responseDocument.Included[1].Id.Should().Be(blog.Owner.Articles[0].StringId); + // responseDocument.Included[2].Id.Should().Be(blog.Owner.Articles[2].StringId); + // } + + // [Fact] + // public async Task Can_sort_in_scope_of_HasManyThrough_relationship() + // { + // // Arrange + // var article = _articleFaker.Generate(); + // article.ArticleTags = new HashSet + // { + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "B" + // } + // }, + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "A" + // } + // }, + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "C" + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Articles.Add(article); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/articles/{article.StringId}?include=tags&sort[tags]=name"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Id.Should().Be(article.StringId); + // + // responseDocument.Included.Should().HaveCount(3); + // responseDocument.Included[0].Id.Should().Be(article.ArticleTags.Skip(1).First().Tag.StringId); + // responseDocument.Included[1].Id.Should().Be(article.ArticleTags.Skip(0).First().Tag.StringId); + // responseDocument.Included[2].Id.Should().Be(article.ArticleTags.Skip(2).First().Tag.StringId); + // } + + // [Fact] + // public async Task Can_sort_on_multiple_fields_in_multiple_scopes() + // { + // // Arrange + // var blogs = new List + // { + // new Blog + // { + // Title = "Z", + // Articles = new List
+ // { + // new Article + // { + // Caption = "B", + // Revisions = new List + // { + // new Revision + // { + // PublishTime = 1.January(2015) + // }, + // new Revision + // { + // PublishTime = 1.January(2014) + // }, + // new Revision + // { + // PublishTime = 1.January(2016) + // } + // } + // }, + // new Article + // { + // Caption = "A", + // Url = "www.some2.com" + // }, + // new Article + // { + // Caption = "A", + // Url = "www.some1.com" + // }, + // new Article + // { + // Caption = "C" + // } + // } + // }, + // new Blog + // { + // Title = "Y" + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync(); + // dbContext.Blogs.AddRange(blogs); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/api/v1/blogs?include=articles.revisions&sort=title&sort[articles]=caption,url&sort[articles.revisions]=-publishTime"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(2); + // responseDocument.ManyData[0].Id.Should().Be(blogs[1].StringId); + // responseDocument.ManyData[1].Id.Should().Be(blogs[0].StringId); + // + // responseDocument.Included.Should().HaveCount(7); + // + // responseDocument.Included[0].Type.Should().Be("articles"); + // responseDocument.Included[0].Id.Should().Be(blogs[0].Articles[2].StringId); + // + // responseDocument.Included[1].Type.Should().Be("articles"); + // responseDocument.Included[1].Id.Should().Be(blogs[0].Articles[1].StringId); + // + // responseDocument.Included[2].Type.Should().Be("articles"); + // responseDocument.Included[2].Id.Should().Be(blogs[0].Articles[0].StringId); + // + // responseDocument.Included[3].Type.Should().Be("revisions"); + // responseDocument.Included[3].Id.Should().Be(blogs[0].Articles[0].Revisions.Skip(2).First().StringId); + // + // responseDocument.Included[4].Type.Should().Be("revisions"); + // responseDocument.Included[4].Id.Should().Be(blogs[0].Articles[0].Revisions.Skip(0).First().StringId); + // + // responseDocument.Included[5].Type.Should().Be("revisions"); + // responseDocument.Included[5].Id.Should().Be(blogs[0].Articles[0].Revisions.Skip(1).First().StringId); + // + // responseDocument.Included[6].Type.Should().Be("articles"); + // responseDocument.Included[6].Id.Should().Be(blogs[0].Articles[3].StringId); + // } + + // [Fact] + // public async Task Can_sort_on_HasOne_relationship() + // { + // // Arrange + // var articles = new List
+ // { + // new Article + // { + // Caption = "X", + // Author = new Author + // { + // LastName = "Conner" + // } + // }, + // new Article + // { + // Caption = "X", + // Author = new Author + // { + // LastName = "Smith" + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync
(); + // dbContext.Articles.AddRange(articles); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/api/v1/articles?sort=-author.lastName"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(2); + // responseDocument.ManyData[0].Id.Should().Be(articles[1].StringId); + // responseDocument.ManyData[1].Id.Should().Be(articles[0].StringId); + // } + // + // [Fact] + // public async Task Can_sort_in_multiple_scopes() + // { + // // Arrange + // var blogs = new List + // { + // new Blog + // { + // Title = "Cooking" + // }, + // new Blog + // { + // Title = "Technology", + // Owner = new Author + // { + // LastName = "Smith", + // Articles = new List
+ // { + // new Article + // { + // Caption = "One" + // }, + // new Article + // { + // Caption = "Two", + // Revisions = new List + // { + // new Revision + // { + // PublishTime = 1.January(2000) + // }, + // new Revision + // { + // PublishTime = 10.January(2010) + // } + // } + // } + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // await dbContext.ClearTableAsync(); + // dbContext.Blogs.AddRange(blogs); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = "/api/v1/blogs?include=owner.articles.revisions&" + + // "sort=-title&" + + // "sort[owner.articles]=-caption&" + + // "sort[owner.articles.revisions]=-publishTime"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(2); + // responseDocument.ManyData[0].Id.Should().Be(blogs[1].StringId); + // responseDocument.ManyData[1].Id.Should().Be(blogs[0].StringId); + // + // responseDocument.Included.Should().HaveCount(5); + // responseDocument.Included[0].Id.Should().Be(blogs[1].Owner.StringId); + // responseDocument.Included[1].Id.Should().Be(blogs[1].Owner.Articles[1].StringId); + // responseDocument.Included[2].Id.Should().Be(blogs[1].Owner.Articles[1].Revisions.Skip(1).First().StringId); + // responseDocument.Included[3].Id.Should().Be(blogs[1].Owner.Articles[1].Revisions.Skip(0).First().StringId); + // responseDocument.Included[4].Id.Should().Be(blogs[1].Owner.Articles[0].StringId); + // } + // + // [Fact] + // public async Task Cannot_sort_in_unknown_scope() + // { + // // Arrange + // var route = "/api/v1/people?sort[doesNotExist]=id"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + // + // responseDocument.Errors.Should().HaveCount(1); + // responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + // responseDocument.Errors[0].Title.Should().Be("The specified sort is invalid."); + // responseDocument.Errors[0].Detail.Should().Be("Relationship 'doesNotExist' does not exist on resource 'people'."); + // responseDocument.Errors[0].Source.Parameter.Should().Be("sort[doesNotExist]"); + // } + // + // [Fact] + // public async Task Cannot_sort_in_unknown_nested_scope() + // { + // // Arrange + // var route = "/api/v1/people?sort[todoItems.doesNotExist]=id"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + // + // responseDocument.Errors.Should().HaveCount(1); + // responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + // responseDocument.Errors[0].Title.Should().Be("The specified sort is invalid."); + // responseDocument.Errors[0].Detail.Should().Be("Relationship 'doesNotExist' in 'todoItems.doesNotExist' does not exist on resource 'todoItems'."); + // responseDocument.Errors[0].Source.Parameter.Should().Be("sort[todoItems.doesNotExist]"); + // } + + [Fact] + public async Task Cannot_sort_on_attribute_with_blocked_capability() + { + // Arrange + var route = "/api/v1/todoItems?sort=achievedDate"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("Sorting on the requested attribute is not allowed."); + responseDocument.Errors[0].Detail.Should().Be("Sorting on attribute 'achievedDate' is not allowed."); + responseDocument.Errors[0].Source.Parameter.Should().Be("sort"); + } + + [Fact] + public async Task Can_sort_descending_by_ID() + { + // Arrange + var persons = new List + { + new Person {LastName = "B"}, + new Person {LastName = "A"}, + new Person {LastName = "A"} + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(Person)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(persons); + }); + + var route = "/api/v1/people?sort=lastName,-id"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + persons.Sort((a, b) => a.LastName.CompareTo(b.LastName) + b.Id.CompareTo(a.Id)); + + responseDocument.ManyData.Should().HaveCount(3); + responseDocument.ManyData[0].Id.Should().Be(persons[0].StringId); + responseDocument.ManyData[1].Id.Should().Be(persons[1].StringId); + responseDocument.ManyData[2].Id.Should().Be(persons[2].StringId); + } + + [Fact] + public async Task Sorts_by_ID_if_none_specified() + { + // Arrange + var persons = new List + { + new Person {}, + new Person {}, + new Person {}, + new Person {} + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection(nameof(Person)); + await collection.DeleteManyAsync(Builders.Filter.Empty); + await collection.InsertManyAsync(persons); + }); + + var route = "/api/v1/people"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + persons.Sort((a, b) => a.Id.CompareTo(b.Id)); + + responseDocument.ManyData.Should().HaveCount(4); + responseDocument.ManyData[0].Id.Should().Be(persons[0].StringId); + responseDocument.ManyData[1].Id.Should().Be(persons[1].StringId); + responseDocument.ManyData[2].Id.Should().Be(persons[2].StringId); + responseDocument.ManyData[3].Id.Should().Be(persons[3].StringId); + } + } +} \ No newline at end of file diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/SparseFieldSets/ResourceCaptureStore.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/SparseFieldSets/ResourceCaptureStore.cs new file mode 100644 index 0000000..12093c0 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/SparseFieldSets/ResourceCaptureStore.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using JsonApiDotNetCore.Resources; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.SparseFieldSets +{ + public sealed class ResourceCaptureStore + { + public List Resources { get; } = new List(); + + public void Add(IEnumerable resources) + { + Resources.AddRange(resources); + } + + public void Clear() + { + Resources.Clear(); + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/SparseFieldSets/ResultCapturingRepository.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/SparseFieldSets/ResultCapturingRepository.cs new file mode 100644 index 0000000..1c5d6a2 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/SparseFieldSets/ResultCapturingRepository.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Queries; +using JsonApiDotNetCore.Resources; +using MongoDB.Driver; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.SparseFieldSets +{ + /// + /// Enables sparse fieldset tests to verify which fields were (not) retrieved from the database. + /// + public sealed class ResultCapturingRepository : MongoEntityRepository + where TResource : class, IIdentifiable + { + private readonly ResourceCaptureStore _captureStore; + + public ResultCapturingRepository( + IMongoDatabase db, + ITargetedFields targetedFields, + IResourceContextProvider resourceContextProvider, + IResourceFactory resourceFactory, + ResourceCaptureStore captureStore) + : base(db, targetedFields, resourceContextProvider, resourceFactory) + { + _captureStore = captureStore; + } + + public override async Task> GetAsync(QueryLayer layer, CancellationToken cancellationToken) + { + var resources = await base.GetAsync(layer, cancellationToken); + + _captureStore.Add(resources); + + return resources; + } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/SparseFieldSets/SparseFieldSetTests.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/SparseFieldSets/SparseFieldSetTests.cs new file mode 100644 index 0000000..90709ef --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/SparseFieldSets/SparseFieldSetTests.cs @@ -0,0 +1,808 @@ +using System.Linq; +using System.Net; +using System.Threading.Tasks; +using Bogus; +using FluentAssertions; +using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Serialization.Objects; +using JsonApiDotNetCore.Services; +using JsonApiDotNetCore.MongoDb.Example.Models; +using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; +using Xunit; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests.SparseFieldSets +{ + public sealed class SparseFieldSetTests : IClassFixture> + { + private readonly IntegrationTestContext _testContext; + // private readonly Faker
_articleFaker; + // private readonly Faker _authorFaker; + private readonly Faker _userFaker; + + public SparseFieldSetTests(IntegrationTestContext testContext) + { + _testContext = testContext; + + testContext.ConfigureServicesAfterStartup(services => + { + services.AddSingleton(); + + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + + services.AddScoped, JsonApiResourceService>(); + }); + + // _articleFaker = new Faker
() + // .RuleFor(a => a.Caption, f => f.Random.AlphaNumeric(10)); + // + // _authorFaker = new Faker() + // .RuleFor(a => a.LastName, f => f.Random.Words(2)); + + _userFaker = new Faker() + .RuleFor(u => u.UserName, f => f.Internet.UserName()) + .RuleFor(u => u.Password, f => f.Internet.Password()); + } + + [Fact] + public async Task Can_select_fields_in_primary_resources() + { + // Arrange + var store = _testContext.Factory.Services.GetRequiredService(); + store.Clear(); + + var article = new Article + { + Caption = "One", + Url = "https://one.domain.com" + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection
(nameof(Article)); + await collection.DeleteManyAsync(Builders
.Filter.Empty); + await collection.InsertOneAsync(article); + }); + + var route = "/api/v1/articles?fields[articles]=caption"; // TODO: once relationships are implemented select author field too + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Id.Should().Be(article.StringId); + responseDocument.ManyData[0].Attributes.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes["caption"].Should().Be(article.Caption); + // responseDocument.ManyData[0].Relationships.Should().HaveCount(1); + // responseDocument.ManyData[0].Relationships["author"].Data.Should().BeNull(); + // responseDocument.ManyData[0].Relationships["author"].Links.Self.Should().NotBeNull(); + // responseDocument.ManyData[0].Relationships["author"].Links.Related.Should().NotBeNull(); + + var articleCaptured = (Article) store.Resources.Should().ContainSingle(x => x is Article).And.Subject.Single(); + articleCaptured.Caption.Should().Be(article.Caption); + articleCaptured.Url.Should().BeNull(); + } + + [Fact] + public async Task Can_select_attribute_in_primary_resources() + { + // Arrange + var store = _testContext.Factory.Services.GetRequiredService(); + store.Clear(); + + var article = new Article + { + Caption = "One", + Url = "https://one.domain.com" + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection
(nameof(Article)); + await collection.DeleteManyAsync(Builders
.Filter.Empty); + await collection.InsertOneAsync(article); + }); + + var route = "/api/v1/articles?fields[articles]=caption"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Id.Should().Be(article.StringId); + responseDocument.ManyData[0].Attributes.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes["caption"].Should().Be(article.Caption); + responseDocument.ManyData[0].Relationships.Should().BeNull(); + + var articleCaptured = (Article) store.Resources.Should().ContainSingle(x => x is Article).And.Subject.Single(); + articleCaptured.Caption.Should().Be(article.Caption); + articleCaptured.Url.Should().BeNull(); + } + + // [Fact] + // public async Task Can_select_relationship_in_primary_resources() + // { + // // Arrange + // var store = _testContext.Factory.Services.GetRequiredService(); + // store.Clear(); + // + // var article = new Article + // { + // Caption = "One", + // Url = "https://one.domain.com" + // }; + // + // await _testContext.RunOnDatabaseAsync(async db => + // { + // var collection = db.GetCollection
(nameof(Article)); + // await collection.DeleteManyAsync(Builders
.Filter.Empty); + // await collection.InsertOneAsync(article); + // }); + // + // var route = "/api/v1/articles?fields[articles]=author"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Id.Should().Be(article.StringId); + // responseDocument.ManyData[0].Attributes.Should().BeNull(); + // responseDocument.ManyData[0].Relationships.Should().HaveCount(1); + // responseDocument.ManyData[0].Relationships["author"].Data.Should().BeNull(); + // responseDocument.ManyData[0].Relationships["author"].Links.Self.Should().NotBeNull(); + // responseDocument.ManyData[0].Relationships["author"].Links.Related.Should().NotBeNull(); + // + // var articleCaptured = (Article) store.Resources.Should().ContainSingle(x => x is Article).And.Subject.Single(); + // articleCaptured.Caption.Should().BeNull(); + // articleCaptured.Url.Should().BeNull(); + // } + + [Fact] + public async Task Can_select_fields_in_primary_resource_by_ID() + { + // Arrange + var store = _testContext.Factory.Services.GetRequiredService(); + store.Clear(); + + var article = new Article + { + Caption = "One", + Url = "https://one.domain.com" + }; + + await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection
(nameof(Article)).InsertOneAsync(article)); + + var route = $"/api/v1/articles/{article.StringId}?fields[articles]=url"; // TODO: once relationships are implemented select author field too + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.SingleData.Should().NotBeNull(); + responseDocument.SingleData.Id.Should().Be(article.StringId); + responseDocument.SingleData.Attributes.Should().HaveCount(1); + responseDocument.SingleData.Attributes["url"].Should().Be(article.Url); + // responseDocument.SingleData.Relationships.Should().HaveCount(1); + // responseDocument.SingleData.Relationships["author"].Data.Should().BeNull(); + // responseDocument.SingleData.Relationships["author"].Links.Self.Should().NotBeNull(); + // responseDocument.SingleData.Relationships["author"].Links.Related.Should().NotBeNull(); + + var articleCaptured = (Article) store.Resources.Should().ContainSingle(x => x is Article).And.Subject.Single(); + articleCaptured.Url.Should().Be(article.Url); + articleCaptured.Caption.Should().BeNull(); + } + + // [Fact] + // public async Task Can_select_fields_in_secondary_resources() + // { + // // Arrange + // var store = _testContext.Factory.Services.GetRequiredService(); + // store.Clear(); + // + // var blog = new Blog + // { + // Title = "Some", + // Articles = new List
+ // { + // new Article + // { + // Caption = "One", + // Url = "https://one.domain.com" + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/blogs/{blog.StringId}/articles?fields[articles]=caption,tags"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.ManyData.Should().HaveCount(1); + // responseDocument.ManyData[0].Id.Should().Be(blog.Articles[0].StringId); + // responseDocument.ManyData[0].Attributes.Should().HaveCount(1); + // responseDocument.ManyData[0].Attributes["caption"].Should().Be(blog.Articles[0].Caption); + // responseDocument.ManyData[0].Relationships.Should().HaveCount(1); + // responseDocument.ManyData[0].Relationships["tags"].Data.Should().BeNull(); + // responseDocument.ManyData[0].Relationships["tags"].Links.Self.Should().NotBeNull(); + // responseDocument.ManyData[0].Relationships["tags"].Links.Related.Should().NotBeNull(); + // + // var blogCaptured = (Blog)store.Resources.Should().ContainSingle(x => x is Blog).And.Subject.Single(); + // blogCaptured.Id.Should().Be(blog.Id); + // blogCaptured.Title.Should().BeNull(); + // + // blogCaptured.Articles.Should().HaveCount(1); + // blogCaptured.Articles[0].Caption.Should().Be(blog.Articles[0].Caption); + // blogCaptured.Articles[0].Url.Should().BeNull(); + // } + + // [Fact] + // public async Task Can_select_fields_of_HasOne_relationship() + // { + // // Arrange + // var store = _testContext.Factory.Services.GetRequiredService(); + // store.Clear(); + // + // var article = _articleFaker.Generate(); + // article.Caption = "Some"; + // article.Author = new Author + // { + // FirstName = "Joe", + // LastName = "Smith", + // BusinessEmail = "nospam@email.com" + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Articles.Add(article); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/articles/{article.StringId}?include=author&fields[authors]=lastName,businessEmail,livingAddress"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Id.Should().Be(article.StringId); + // responseDocument.SingleData.Attributes["caption"].Should().Be(article.Caption); + // responseDocument.SingleData.Relationships["author"].SingleData.Id.Should().Be(article.Author.StringId); + // responseDocument.SingleData.Relationships["author"].Links.Self.Should().NotBeNull(); + // responseDocument.SingleData.Relationships["author"].Links.Related.Should().NotBeNull(); + // + // responseDocument.Included.Should().HaveCount(1); + // responseDocument.Included[0].Attributes.Should().HaveCount(2); + // responseDocument.Included[0].Attributes["lastName"].Should().Be(article.Author.LastName); + // responseDocument.Included[0].Attributes["businessEmail"].Should().Be(article.Author.BusinessEmail); + // responseDocument.Included[0].Relationships.Should().HaveCount(1); + // responseDocument.Included[0].Relationships["livingAddress"].Data.Should().BeNull(); + // responseDocument.Included[0].Relationships["livingAddress"].Links.Self.Should().NotBeNull(); + // responseDocument.Included[0].Relationships["livingAddress"].Links.Related.Should().NotBeNull(); + // + // var articleCaptured = (Article) store.Resources.Should().ContainSingle(x => x is Article).And.Subject.Single(); + // articleCaptured.Id.Should().Be(article.Id); + // articleCaptured.Caption.Should().Be(article.Caption); + // + // articleCaptured.Author.LastName.Should().Be(article.Author.LastName); + // articleCaptured.Author.BusinessEmail.Should().Be(article.Author.BusinessEmail); + // articleCaptured.Author.FirstName.Should().BeNull(); + // } + // + // [Fact] + // public async Task Can_select_fields_of_HasMany_relationship() + // { + // // Arrange + // var store = _testContext.Factory.Services.GetRequiredService(); + // store.Clear(); + // + // var author = _authorFaker.Generate(); + // author.LastName = "Smith"; + // author.Articles = new List
+ // { + // new Article + // { + // Caption = "One", + // Url = "https://one.domain.com" + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.AuthorDifferentDbContextName.Add(author); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/authors/{author.StringId}?include=articles&fields[articles]=caption,tags"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Id.Should().Be(author.StringId); + // responseDocument.SingleData.Attributes["lastName"].Should().Be(author.LastName); + // responseDocument.SingleData.Relationships["articles"].ManyData.Should().HaveCount(1); + // responseDocument.SingleData.Relationships["articles"].ManyData[0].Id.Should().Be(author.Articles[0].StringId); + // responseDocument.SingleData.Relationships["articles"].Links.Self.Should().NotBeNull(); + // responseDocument.SingleData.Relationships["articles"].Links.Related.Should().NotBeNull(); + // + // responseDocument.Included.Should().HaveCount(1); + // responseDocument.Included[0].Attributes.Should().HaveCount(1); + // responseDocument.Included[0].Attributes["caption"].Should().Be(author.Articles[0].Caption); + // responseDocument.Included[0].Relationships.Should().HaveCount(1); + // responseDocument.Included[0].Relationships["tags"].Data.Should().BeNull(); + // responseDocument.Included[0].Relationships["tags"].Links.Self.Should().NotBeNull(); + // responseDocument.Included[0].Relationships["tags"].Links.Related.Should().NotBeNull(); + // + // var authorCaptured = (Author) store.Resources.Should().ContainSingle(x => x is Author).And.Subject.Single(); + // authorCaptured.Id.Should().Be(author.Id); + // authorCaptured.LastName.Should().Be(author.LastName); + // + // authorCaptured.Articles.Should().HaveCount(1); + // authorCaptured.Articles[0].Caption.Should().Be(author.Articles[0].Caption); + // authorCaptured.Articles[0].Url.Should().BeNull(); + // } + // + // [Fact] + // public async Task Can_select_fields_of_HasMany_relationship_on_secondary_resource() + // { + // // Arrange + // var store = _testContext.Factory.Services.GetRequiredService(); + // store.Clear(); + // + // var blog = new Blog + // { + // Owner = new Author + // { + // LastName = "Smith", + // Articles = new List
+ // { + // new Article + // { + // Caption = "One", + // Url = "https://one.domain.com" + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/blogs/{blog.StringId}/owner?include=articles&fields[articles]=caption,revisions"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Id.Should().Be(blog.Owner.StringId); + // responseDocument.SingleData.Attributes["lastName"].Should().Be(blog.Owner.LastName); + // responseDocument.SingleData.Relationships["articles"].ManyData.Should().HaveCount(1); + // responseDocument.SingleData.Relationships["articles"].ManyData[0].Id.Should().Be(blog.Owner.Articles[0].StringId); + // responseDocument.SingleData.Relationships["articles"].Links.Self.Should().NotBeNull(); + // responseDocument.SingleData.Relationships["articles"].Links.Related.Should().NotBeNull(); + // + // responseDocument.Included.Should().HaveCount(1); + // responseDocument.Included[0].Attributes.Should().HaveCount(1); + // responseDocument.Included[0].Attributes["caption"].Should().Be(blog.Owner.Articles[0].Caption); + // responseDocument.Included[0].Relationships.Should().HaveCount(1); + // responseDocument.Included[0].Relationships["revisions"].Data.Should().BeNull(); + // responseDocument.Included[0].Relationships["revisions"].Links.Self.Should().NotBeNull(); + // responseDocument.Included[0].Relationships["revisions"].Links.Related.Should().NotBeNull(); + // + // var blogCaptured = (Blog) store.Resources.Should().ContainSingle(x => x is Blog).And.Subject.Single(); + // blogCaptured.Id.Should().Be(blog.Id); + // blogCaptured.Owner.Should().NotBeNull(); + // blogCaptured.Owner.LastName.Should().Be(blog.Owner.LastName); + // + // blogCaptured.Owner.Articles.Should().HaveCount(1); + // blogCaptured.Owner.Articles[0].Caption.Should().Be(blog.Owner.Articles[0].Caption); + // blogCaptured.Owner.Articles[0].Url.Should().BeNull(); + // } + // + // [Fact] + // public async Task Can_select_fields_of_HasManyThrough_relationship() + // { + // // Arrange + // var store = _testContext.Factory.Services.GetRequiredService(); + // store.Clear(); + // + // var article = _articleFaker.Generate(); + // article.Caption = "Some"; + // article.ArticleTags = new HashSet + // { + // new ArticleTag + // { + // Tag = new Tag + // { + // Name = "Hot" + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Articles.Add(article); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/articles/{article.StringId}?include=tags&fields[tags]=color"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Id.Should().Be(article.StringId); + // responseDocument.SingleData.Attributes["caption"].Should().Be(article.Caption); + // responseDocument.SingleData.Relationships["tags"].ManyData.Should().HaveCount(1); + // responseDocument.SingleData.Relationships["tags"].ManyData[0].Id.Should().Be(article.ArticleTags.ElementAt(0).Tag.StringId); + // responseDocument.SingleData.Relationships["tags"].Links.Self.Should().NotBeNull(); + // responseDocument.SingleData.Relationships["tags"].Links.Related.Should().NotBeNull(); + // + // responseDocument.Included.Should().HaveCount(1); + // responseDocument.Included[0].Attributes.Should().HaveCount(1); + // responseDocument.Included[0].Attributes["color"].Should().Be(article.ArticleTags.Single().Tag.Color.ToString("G")); + // responseDocument.Included[0].Relationships.Should().BeNull(); + // + // var articleCaptured = (Article) store.Resources.Should().ContainSingle(x => x is Article).And.Subject.Single(); + // articleCaptured.Id.Should().Be(article.Id); + // articleCaptured.Caption.Should().Be(article.Caption); + // + // articleCaptured.ArticleTags.Should().HaveCount(1); + // articleCaptured.ArticleTags.Single().Tag.Color.Should().Be(article.ArticleTags.Single().Tag.Color); + // articleCaptured.ArticleTags.Single().Tag.Name.Should().BeNull(); + // } + // + // [Fact] + // public async Task Can_select_attributes_in_multiple_resource_types() + // { + // // Arrange + // var store = _testContext.Factory.Services.GetRequiredService(); + // store.Clear(); + // + // var blog = new Blog + // { + // Title = "Technology", + // CompanyName = "Contoso", + // Owner = new Author + // { + // FirstName = "Jason", + // LastName = "Smith", + // DateOfBirth = 21.November(1999), + // Articles = new List
+ // { + // new Article + // { + // Caption = "One", + // Url = "www.one.com" + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/blogs/{blog.StringId}?include=owner.articles&fields[blogs]=title&fields[authors]=firstName,lastName&fields[articles]=caption"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Id.Should().Be(blog.StringId); + // responseDocument.SingleData.Attributes.Should().HaveCount(1); + // responseDocument.SingleData.Attributes["title"].Should().Be(blog.Title); + // responseDocument.SingleData.Relationships.Should().BeNull(); + // + // responseDocument.Included.Should().HaveCount(2); + // + // responseDocument.Included[0].Id.Should().Be(blog.Owner.StringId); + // responseDocument.Included[0].Attributes.Should().HaveCount(2); + // responseDocument.Included[0].Attributes["firstName"].Should().Be(blog.Owner.FirstName); + // responseDocument.Included[0].Attributes["lastName"].Should().Be(blog.Owner.LastName); + // responseDocument.Included[0].Relationships.Should().BeNull(); + // + // responseDocument.Included[1].Id.Should().Be(blog.Owner.Articles[0].StringId); + // responseDocument.Included[1].Attributes.Should().HaveCount(1); + // responseDocument.Included[1].Attributes["caption"].Should().Be(blog.Owner.Articles[0].Caption); + // responseDocument.Included[1].Relationships.Should().BeNull(); + // + // var blogCaptured = (Blog) store.Resources.Should().ContainSingle(x => x is Blog).And.Subject.Single(); + // blogCaptured.Id.Should().Be(blog.Id); + // blogCaptured.Title.Should().Be(blog.Title); + // blogCaptured.CompanyName.Should().BeNull(); + // + // blogCaptured.Owner.FirstName.Should().Be(blog.Owner.FirstName); + // blogCaptured.Owner.LastName.Should().Be(blog.Owner.LastName); + // blogCaptured.Owner.DateOfBirth.Should().BeNull(); + // + // blogCaptured.Owner.Articles.Should().HaveCount(1); + // blogCaptured.Owner.Articles[0].Caption.Should().Be(blog.Owner.Articles[0].Caption); + // blogCaptured.Owner.Articles[0].Url.Should().BeNull(); + // } + // + // [Fact] + // public async Task Can_select_only_top_level_fields_with_multiple_includes() + // { + // // Arrange + // var store = _testContext.Factory.Services.GetRequiredService(); + // store.Clear(); + // + // var blog = new Blog + // { + // Title = "Technology", + // CompanyName = "Contoso", + // Owner = new Author + // { + // FirstName = "Jason", + // LastName = "Smith", + // DateOfBirth = 21.November(1999), + // Articles = new List
+ // { + // new Article + // { + // Caption = "One", + // Url = "www.one.com" + // } + // } + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Blogs.Add(blog); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/blogs/{blog.StringId}?include=owner.articles&fields[blogs]=title,owner"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Id.Should().Be(blog.StringId); + // responseDocument.SingleData.Attributes.Should().HaveCount(1); + // responseDocument.SingleData.Attributes["title"].Should().Be(blog.Title); + // responseDocument.SingleData.Relationships.Should().HaveCount(1); + // responseDocument.SingleData.Relationships["owner"].SingleData.Id.Should().Be(blog.Owner.StringId); + // responseDocument.SingleData.Relationships["owner"].Links.Self.Should().NotBeNull(); + // responseDocument.SingleData.Relationships["owner"].Links.Related.Should().NotBeNull(); + // + // responseDocument.Included.Should().HaveCount(2); + // + // responseDocument.Included[0].Id.Should().Be(blog.Owner.StringId); + // responseDocument.Included[0].Attributes["firstName"].Should().Be(blog.Owner.FirstName); + // responseDocument.Included[0].Attributes["lastName"].Should().Be(blog.Owner.LastName); + // responseDocument.Included[0].Attributes["dateOfBirth"].Should().Be(blog.Owner.DateOfBirth); + // responseDocument.Included[0].Relationships["articles"].ManyData.Should().HaveCount(1); + // responseDocument.Included[0].Relationships["articles"].ManyData[0].Id.Should().Be(blog.Owner.Articles[0].StringId); + // responseDocument.Included[0].Relationships["articles"].Links.Self.Should().NotBeNull(); + // responseDocument.Included[0].Relationships["articles"].Links.Related.Should().NotBeNull(); + // + // responseDocument.Included[1].Id.Should().Be(blog.Owner.Articles[0].StringId); + // responseDocument.Included[1].Attributes["caption"].Should().Be(blog.Owner.Articles[0].Caption); + // responseDocument.Included[1].Attributes["url"].Should().Be(blog.Owner.Articles[0].Url); + // responseDocument.Included[1].Relationships["tags"].Data.Should().BeNull(); + // responseDocument.Included[1].Relationships["tags"].Links.Self.Should().NotBeNull(); + // responseDocument.Included[1].Relationships["tags"].Links.Related.Should().NotBeNull(); + // + // var blogCaptured = (Blog) store.Resources.Should().ContainSingle(x => x is Blog).And.Subject.Single(); + // blogCaptured.Id.Should().Be(blog.Id); + // blogCaptured.Title.Should().Be(blog.Title); + // blogCaptured.CompanyName.Should().BeNull(); + // } + + [Fact] + public async Task Can_select_ID() + { + // Arrange + var store = _testContext.Factory.Services.GetRequiredService(); + store.Clear(); + + var article = new Article + { + Caption = "One", + Url = "https://one.domain.com" + }; + + await _testContext.RunOnDatabaseAsync(async db => + { + var collection = db.GetCollection
(nameof(Article)); + await collection.DeleteManyAsync(Builders
.Filter.Empty); + await collection.InsertOneAsync(article); + }); + + var route = "/api/v1/articles?fields[articles]=id,caption"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + + responseDocument.ManyData.Should().HaveCount(1); + responseDocument.ManyData[0].Id.Should().Be(article.StringId); + responseDocument.ManyData[0].Attributes.Should().HaveCount(1); + responseDocument.ManyData[0].Attributes["caption"].Should().Be(article.Caption); + responseDocument.ManyData[0].Relationships.Should().BeNull(); + + var articleCaptured = (Article) store.Resources.Should().ContainSingle(x => x is Article).And.Subject.Single(); + articleCaptured.Id.Should().Be(article.Id); + articleCaptured.Caption.Should().Be(article.Caption); + articleCaptured.Url.Should().BeNull(); + } + + [Fact] + public async Task Cannot_select_on_unknown_resource_type() + { + // Arrange + var route = "/api/v1/people?fields[doesNotExist]=id"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("The specified fieldset is invalid."); + responseDocument.Errors[0].Detail.Should().Be("Resource type 'doesNotExist' does not exist."); + responseDocument.Errors[0].Source.Parameter.Should().Be("fields[doesNotExist]"); + } + + [Fact] + public async Task Cannot_select_attribute_with_blocked_capability() + { + // Arrange + var user = _userFaker.Generate(); + + var route = $"/api/v1/users/{user.Id}?fields[users]=password"; + + // Act + var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + + // Assert + httpResponse.Should().HaveStatusCode(HttpStatusCode.BadRequest); + + responseDocument.Errors.Should().HaveCount(1); + responseDocument.Errors[0].StatusCode.Should().Be(HttpStatusCode.BadRequest); + responseDocument.Errors[0].Title.Should().Be("Retrieving the requested attribute is not allowed."); + responseDocument.Errors[0].Detail.Should().Be("Retrieving the attribute 'password' is not allowed."); + responseDocument.Errors[0].Source.Parameter.Should().Be("fields[users]"); + } + + // [Fact] + // public async Task Retrieves_all_properties_when_fieldset_contains_readonly_attribute() + // { + // // Arrange + // var store = _testContext.Factory.Services.GetRequiredService(); + // store.Clear(); + // + // var todoItem = new TodoItem + // { + // Description = "Pending work..." + // }; + // + // await _testContext.RunOnDatabaseAsync(async db => await db.GetCollection(nameof(TodoItem)).InsertOneAsync(todoItem)); + // + // var route = $"/api/v1/todoItems/{todoItem.StringId}?fields[todoItems]=calculatedValue"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Id.Should().Be(todoItem.StringId); + // responseDocument.SingleData.Attributes.Should().HaveCount(1); + // responseDocument.SingleData.Attributes["calculatedValue"].Should().Be(todoItem.CalculatedValue); + // responseDocument.SingleData.Relationships.Should().BeNull(); + // + // var todoItemCaptured = (TodoItem) store.Resources.Should().ContainSingle(x => x is TodoItem).And.Subject.Single(); + // todoItemCaptured.CalculatedValue.Should().Be(todoItem.CalculatedValue); + // todoItemCaptured.Description.Should().Be(todoItem.Description); + // } + + // [Fact] + // public async Task Can_select_fields_on_resource_type_multiple_times() + // { + // // Arrange + // var store = _testContext.Factory.Services.GetRequiredService(); + // store.Clear(); + // + // var article = new Article + // { + // Caption = "One", + // Url = "https://one.domain.com", + // Author = new Author + // { + // LastName = "Smith" + // } + // }; + // + // await _testContext.RunOnDatabaseAsync(async dbContext => + // { + // dbContext.Articles.Add(article); + // + // await dbContext.SaveChangesAsync(); + // }); + // + // var route = $"/api/v1/articles/{article.StringId}?fields[articles]=url&fields[articles]=caption,url&fields[articles]=caption,author"; + // + // // Act + // var (httpResponse, responseDocument) = await _testContext.ExecuteGetAsync(route); + // + // // Assert + // httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); + // + // responseDocument.SingleData.Should().NotBeNull(); + // responseDocument.SingleData.Id.Should().Be(article.StringId); + // responseDocument.SingleData.Attributes.Should().HaveCount(2); + // responseDocument.SingleData.Attributes["caption"].Should().Be(article.Caption); + // responseDocument.SingleData.Attributes["url"].Should().Be(article.Url); + // responseDocument.SingleData.Relationships.Should().HaveCount(1); + // responseDocument.SingleData.Relationships["author"].Data.Should().BeNull(); + // responseDocument.SingleData.Relationships["author"].Links.Self.Should().NotBeNull(); + // responseDocument.SingleData.Relationships["author"].Links.Related.Should().NotBeNull(); + // + // var articleCaptured = (Article) store.Resources.Should().ContainSingle(x => x is Article).And.Subject.Single(); + // articleCaptured.Id.Should().Be(article.Id); + // articleCaptured.Caption.Should().Be(article.Caption); + // articleCaptured.Url.Should().Be(articleCaptured.Url); + // } + } +} diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/TestableStartup.cs b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/TestableStartup.cs new file mode 100644 index 0000000..4a4b586 --- /dev/null +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/IntegrationTests/TestableStartup.cs @@ -0,0 +1,26 @@ +using JsonApiDotNetCore.Configuration; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace JsonApiDotNetCore.MongoDb.Example.Tests.IntegrationTests +{ + public class TestableStartup : EmptyStartup + { + public TestableStartup(IConfiguration configuration) : base(configuration) + { + } + + public override void ConfigureServices(IServiceCollection services) + { + } + + public override void Configure(IApplicationBuilder app, IWebHostEnvironment environment) + { + app.UseRouting(); + app.UseJsonApi(); + app.UseEndpoints(endpoints => endpoints.MapControllers()); + } + } +} \ No newline at end of file diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/JsonApiDotNetCore.MongoDb.Example.Tests.csproj b/test/JsonApiDotNetCore.MongoDb.Example.Tests/JsonApiDotNetCore.MongoDb.Example.Tests.csproj index 3be27f7..8dcfdd4 100644 --- a/test/JsonApiDotNetCore.MongoDb.Example.Tests/JsonApiDotNetCore.MongoDb.Example.Tests.csproj +++ b/test/JsonApiDotNetCore.MongoDb.Example.Tests/JsonApiDotNetCore.MongoDb.Example.Tests.csproj @@ -2,7 +2,6 @@ $(NetCoreAppVersion) - false @@ -12,7 +11,9 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all + + @@ -22,7 +23,7 @@ - + diff --git a/test/JsonApiDotNetCore.MongoDb.Example.Tests/coverage/lcov-coverage.info b/test/JsonApiDotNetCore.MongoDb.Example.Tests/coverage/lcov-coverage.info deleted file mode 100644 index d7bb35e..0000000 --- a/test/JsonApiDotNetCore.MongoDb.Example.Tests/coverage/lcov-coverage.info +++ /dev/null @@ -1,281 +0,0 @@ -SF:/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/JsonApiDotNetCore.MongoDb/MongoEntityRepository.cs -FN:41,MongoDB.Driver.IMongoCollection`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::get_Collection() -FNDA:30,MongoDB.Driver.IMongoCollection`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::get_Collection() -DA:42,30 -FN:42,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::get_Entities() -FNDA:26,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::get_Entities() -DA:43,26 -FN:45,System.Threading.Tasks.Task`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::CountAsync(JsonApiDotNetCore.Queries.Expressions.FilterExpression) -FNDA:12,System.Threading.Tasks.Task`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::CountAsync(JsonApiDotNetCore.Queries.Expressions.FilterExpression) -DA:46,12 -DA:47,12 -DA:48,12 -DA:49,12 -DA:50,12 -DA:51,12 -DA:53,12 -DA:54,12 -DA:55,12 -FN:57,System.Threading.Tasks.Task JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::CreateAsync(TResource) -FNDA:2,System.Threading.Tasks.Task JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::CreateAsync(TResource) -DA:58,2 -FN:66,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::FlushFromCache(TResource) -FNDA:0,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::FlushFromCache(TResource) -DA:67,0 -FN:80,System.Threading.Tasks.Task JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::UpdateRelationshipAsync(System.Object,JsonApiDotNetCore.Resources.Annotations.RelationshipAttribute,System.Collections.Generic.IReadOnlyCollection`1) -FNDA:0,System.Threading.Tasks.Task JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::UpdateRelationshipAsync(System.Object,JsonApiDotNetCore.Resources.Annotations.RelationshipAttribute,System.Collections.Generic.IReadOnlyCollection`1) -DA:81,0 -FN:83,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::ApplyQueryLayer(JsonApiDotNetCore.Queries.QueryLayer) -FNDA:26,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::ApplyQueryLayer(JsonApiDotNetCore.Queries.QueryLayer) -DA:84,26 -DA:85,26 -DA:87,26 -DA:88,26 -DA:90,26 -DA:91,26 -DA:92,26 -FN:27,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::.ctor(MongoDB.Driver.IMongoDatabase,JsonApiDotNetCore.Resources.ITargetedFields,JsonApiDotNetCore.Configuration.IResourceGraph,JsonApiDotNetCore.Resources.IResourceFactory,System.Collections.Generic.IEnumerable`1) -FNDA:16,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::.ctor(MongoDB.Driver.IMongoDatabase,JsonApiDotNetCore.Resources.ITargetedFields,JsonApiDotNetCore.Configuration.IResourceGraph,JsonApiDotNetCore.Resources.IResourceFactory,System.Collections.Generic.IEnumerable`1) -DA:28,16 -DA:29,16 -DA:30,16 -DA:31,16 -DA:32,16 -DA:33,16 -DA:34,16 -DA:35,16 -DA:36,16 -DA:37,16 -DA:38,16 -DA:39,16 -DA:40,16 -FN:60,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2/d__12::MoveNext() -FNDA:2,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2/d__12::MoveNext() -DA:61,2 -DA:62,2 -DA:63,2 -DA:64,2 -BRDA:63,248,0,2 -BRDA:63,248,1,0 -FN:69,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2/d__14::MoveNext() -FNDA:14,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2/d__14::MoveNext() -DA:70,14 -FN:72,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2/d__15::MoveNext() -FNDA:0,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2/d__15::MoveNext() -DA:73,0 -DA:74,0 -DA:75,0 -DA:77,0 -DA:78,0 -BRDA:74,128,1,0 -BRDA:74,128,0,0 -LF:44 -LH:37 -BRF:4 -BRH:1 -FNF:11 -FNH:8 -end_of_record -SF:/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs -FN:37,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyQuery(JsonApiDotNetCore.Queries.QueryLayer) -FNDA:26,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyQuery(JsonApiDotNetCore.Queries.QueryLayer) -DA:38,26 -DA:39,26 -DA:41,26 -DA:42,14 -DA:43,14 -DA:44,14 -DA:46,26 -DA:47,12 -DA:48,12 -DA:49,12 -DA:51,26 -DA:52,12 -DA:53,12 -DA:54,12 -DA:56,26 -DA:57,26 -BRDA:41,19,0,14 -BRDA:41,19,1,26 -BRDA:46,48,0,12 -BRDA:46,48,1,26 -BRDA:51,77,0,12 -BRDA:51,77,1,26 -FN:59,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyFilter(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.FilterExpression) -FNDA:14,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyFilter(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.FilterExpression) -DA:60,14 -DA:61,14 -DA:63,14 -DA:64,14 -DA:65,14 -FN:67,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplySort(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.SortExpression) -FNDA:12,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplySort(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.SortExpression) -DA:68,12 -DA:69,12 -DA:71,12 -DA:72,12 -DA:73,12 -FN:75,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyPagination(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.PaginationExpression) -FNDA:12,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyPagination(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.PaginationExpression) -DA:76,12 -DA:77,12 -DA:79,12 -DA:80,12 -DA:81,12 -FN:23,System.Void JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::.ctor(System.Linq.Expressions.Expression,System.Type,System.Type,JsonApiDotNetCore.Queries.Internal.QueryableBuilding.LambdaParameterNameFactory,JsonApiDotNetCore.Resources.IResourceFactory,JsonApiDotNetCore.Configuration.IResourceContextProvider,JsonApiDotNetCore.Queries.Internal.QueryableBuilding.LambdaScopeFactory) -FNDA:26,System.Void JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::.ctor(System.Linq.Expressions.Expression,System.Type,System.Type,JsonApiDotNetCore.Queries.Internal.QueryableBuilding.LambdaParameterNameFactory,JsonApiDotNetCore.Resources.IResourceFactory,JsonApiDotNetCore.Configuration.IResourceContextProvider,JsonApiDotNetCore.Queries.Internal.QueryableBuilding.LambdaScopeFactory) -DA:24,26 -DA:25,26 -DA:26,26 -DA:27,26 -DA:28,26 -DA:29,26 -DA:30,26 -DA:31,26 -DA:32,26 -DA:33,26 -DA:34,26 -DA:35,26 -BRDA:28,11,0,0 -BRDA:28,11,1,26 -BRDA:29,33,0,0 -BRDA:29,33,1,26 -BRDA:30,55,0,0 -BRDA:30,55,1,26 -BRDA:31,78,0,0 -BRDA:31,78,1,26 -BRDA:32,101,0,0 -BRDA:32,101,1,26 -BRDA:33,124,0,0 -BRDA:33,124,1,26 -BRDA:34,147,0,26 -BRDA:34,147,1,26 -LF:43 -LH:43 -BRF:20 -BRH:14 -FNF:5 -FNH:5 -end_of_record -SF:/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/JsonApiDotNetCore.MongoDb/Extensions/MongoIQueryableExtensions.cs -FN:15,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions::ToMongoQueryable(System.Linq.IQueryable`1) -FNDA:14,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions::ToMongoQueryable(System.Linq.IQueryable`1) -DA:16,14 -DA:17,14 -DA:18,14 -BRDA:16,8,0,0 -BRDA:16,8,1,14 -FN:12,System.Void JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions/d__0`1::MoveNext() -FNDA:14,System.Void JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions/d__0`1::MoveNext() -DA:13,14 -LF:4 -LH:4 -BRF:2 -BRH:1 -FNF:2 -FNH:2 -end_of_record -SF:/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/Example/Program.cs -FN:8,System.Void Example.Program::Main(System.String[]) -FNDA:0,System.Void Example.Program::Main(System.String[]) -DA:9,0 -DA:10,0 -DA:11,0 -FN:13,Microsoft.Extensions.Hosting.IHostBuilder Example.Program::CreateHostBuilder(System.String[]) -FNDA:0,Microsoft.Extensions.Hosting.IHostBuilder Example.Program::CreateHostBuilder(System.String[]) -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -FNF:2 -FNH:0 -end_of_record -SF:/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/Example/Startup.cs -FN:20,Microsoft.Extensions.Configuration.IConfiguration Example.Startup::get_Configuration() -FNDA:0,Microsoft.Extensions.Configuration.IConfiguration Example.Startup::get_Configuration() -DA:21,0 -FN:24,System.Void Example.Startup::ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection) -FNDA:3,System.Void Example.Startup::ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection) -DA:25,3 -DA:26,3 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:32,3 -DA:33,3 -DA:34,6 -DA:35,6 -DA:36,6 -DA:37,6 -DA:38,6 -DA:39,6 -DA:40,6 -DA:41,6 -DA:42,6 -DA:43,3 -FN:46,System.Void Example.Startup::Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Hosting.IWebHostEnvironment) -FNDA:3,System.Void Example.Startup::Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Hosting.IWebHostEnvironment) -DA:47,3 -DA:48,3 -DA:49,3 -DA:50,3 -DA:51,6 -DA:52,3 -FN:15,System.Void Example.Startup::.ctor(Microsoft.Extensions.Configuration.IConfiguration) -FNDA:3,System.Void Example.Startup::.ctor(Microsoft.Extensions.Configuration.IConfiguration) -DA:16,3 -DA:17,3 -DA:18,3 -DA:19,3 -LF:29 -LH:24 -BRF:0 -BRH:0 -FNF:4 -FNH:3 -end_of_record -SF:/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/Example/Models/Book.cs -FN:12,System.String Example.Models.Book::get_Id() -FNDA:1481,System.String Example.Models.Book::get_Id() -DA:13,1481 -FN:15,System.String Example.Models.Book::get_Name() -FNDA:942,System.String Example.Models.Book::get_Name() -DA:16,942 -FN:19,System.Decimal Example.Models.Book::get_Price() -FNDA:1187,System.Decimal Example.Models.Book::get_Price() -DA:20,1187 -FN:22,System.String Example.Models.Book::get_Category() -FNDA:912,System.String Example.Models.Book::get_Category() -DA:23,912 -FN:25,System.String Example.Models.Book::get_Author() -FNDA:912,System.String Example.Models.Book::get_Author() -DA:26,912 -FN:28,System.String Example.Models.Book::get_StringId() -FNDA:0,System.String Example.Models.Book::get_StringId() -DA:29,0 -LF:6 -LH:5 -BRF:0 -BRH:0 -FNF:6 -FNH:5 -end_of_record -SF:/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/Example/Controllers/BooksController.cs -FN:11,System.Void Example.Controllers.BooksController::.ctor(JsonApiDotNetCore.Configuration.IJsonApiOptions,Microsoft.Extensions.Logging.ILoggerFactory,JsonApiDotNetCore.Services.IResourceService`2) -FNDA:16,System.Void Example.Controllers.BooksController::.ctor(JsonApiDotNetCore.Configuration.IJsonApiOptions,Microsoft.Extensions.Logging.ILoggerFactory,JsonApiDotNetCore.Services.IResourceService`2) -DA:12,16 -DA:13,16 -DA:14,16 -LF:3 -LH:3 -BRF:0 -BRH:0 -FNF:1 -FNH:1 -end_of_record \ No newline at end of file diff --git a/test/JsonApiDotNetCore.MongoDb.IntegrationTests/JsonApiDotNetCore.MongoDb.IntegrationTests.csproj b/test/JsonApiDotNetCore.MongoDb.IntegrationTests/JsonApiDotNetCore.MongoDb.IntegrationTests.csproj deleted file mode 100644 index 07b69c3..0000000 --- a/test/JsonApiDotNetCore.MongoDb.IntegrationTests/JsonApiDotNetCore.MongoDb.IntegrationTests.csproj +++ /dev/null @@ -1,26 +0,0 @@ - - - - $(NetCoreAppVersion) - - false - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - - diff --git a/test/JsonApiDotNetCore.MongoDb.IntegrationTests/MongoEntityRepositoryTest.cs b/test/JsonApiDotNetCore.MongoDb.IntegrationTests/MongoEntityRepositoryTest.cs deleted file mode 100644 index ab39aa8..0000000 --- a/test/JsonApiDotNetCore.MongoDb.IntegrationTests/MongoEntityRepositoryTest.cs +++ /dev/null @@ -1,114 +0,0 @@ -using JsonApiDotNetCore.Configuration; -using JsonApiDotNetCore.MongoDb.IntegrationTests.Models; -using JsonApiDotNetCore.Queries; -using JsonApiDotNetCore.Repositories; -using JsonApiDotNetCore.Resources; -using JsonApiDotNetCore.Resources.Annotations; -using Microsoft.Extensions.Logging.Abstractions; -using MongoDB.Driver; -using Moq; -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using Xunit; - -namespace JsonApiDotNetCore.MongoDb.IntegrationTests -{ - public sealed class MongoEntityRepositoryTests : IAsyncLifetime - { - private readonly IResourceRepository _repository; - private readonly IMongoDatabase _database; - private readonly Mock _targetedFields; - - private IMongoCollection Books => _database.GetCollection(nameof(Book)); - - public MongoEntityRepositoryTests() - { - var client = new MongoClient("mongodb://localhost:27017"); - _database = client.GetDatabase("JsonApiDotNet_MongoDb_Test"); - - var targetedFields = new Mock(); - targetedFields.Setup(tf => tf.Attributes).Returns(new List()); - var resourceGraph = BuildGraph(); - var resourceFactory = new Mock(); - var constraintProviders = new List(); - - _targetedFields = targetedFields; - _repository = new MongoEntityRepository( - _database, - targetedFields.Object, - resourceGraph, - resourceFactory.Object, - constraintProviders); - } - - private IResourceGraph BuildGraph() - { - var resourceGraphBuilder = new ResourceGraphBuilder(new JsonApiOptions(), NullLoggerFactory.Instance); - resourceGraphBuilder.Add(); - return resourceGraphBuilder.Build(); - } - - public Task InitializeAsync() => Task.CompletedTask; - - public async Task DisposeAsync() => await Books.DeleteManyAsync(Builders.Filter.Empty); - - [Fact] - public async Task UpdateAsync_ShouldUpdateOnlySpecifiedAttributes() - { - _targetedFields.Setup(tf => tf.Attributes).Returns(BookAttributes_PriceOnly()); - - var book = new Book - { - Name = "Basic Philosophy", - Author = "Some boring philosopher", - Category = "Philosophy", - Price = 2.00M, - }; - - await Books.InsertOneAsync(book); - - var newDoc = new Book - { - Name = "Basic Philosophy", - Author = "Some boring philosopher", - Category = "Not Philosophy", - Price = 5.00M, - }; - - await _repository.UpdateAsync(newDoc, book); - var saved = await Books.AsQueryable().FirstOrDefaultAsync(); - - Assert.NotEqual(newDoc.Category, saved.Category); - Assert.Equal(newDoc.Price, saved.Price); - } - - private IList BookAttributes_PriceOnly() - { - var priceAttr = new AttrAttribute - { - PublicName = "price" - }; - - typeof(AttrAttribute) - .GetProperty(nameof(AttrAttribute.Property)) - ?.SetValue(priceAttr, typeof(Book).GetProperty(nameof(Book.Price))); - - return new List { priceAttr }; - } - - [Fact] - public void FlushFromCache_ShouldThrowNotImplementedException() - { - Assert.Throws(() => - _repository.FlushFromCache(null)); - } - - [Fact] - public async Task UpdateRelationshipAsync_ShouldThrowNotImplementedException() - { - await Assert.ThrowsAsync(() => - _repository.UpdateRelationshipAsync(null, null, null)); - } - } -} diff --git a/test/JsonApiDotNetCore.MongoDb.IntegrationTests/coverage/lcov-coverage.info b/test/JsonApiDotNetCore.MongoDb.IntegrationTests/coverage/lcov-coverage.info deleted file mode 100644 index e17b18b..0000000 --- a/test/JsonApiDotNetCore.MongoDb.IntegrationTests/coverage/lcov-coverage.info +++ /dev/null @@ -1,177 +0,0 @@ -SF:/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/JsonApiDotNetCore.MongoDb/MongoEntityRepository.cs -FN:41,MongoDB.Driver.IMongoCollection`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::get_Collection() -FNDA:1,MongoDB.Driver.IMongoCollection`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::get_Collection() -DA:42,1 -FN:42,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::get_Entities() -FNDA:0,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::get_Entities() -DA:43,0 -FN:45,System.Threading.Tasks.Task`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::CountAsync(JsonApiDotNetCore.Queries.Expressions.FilterExpression) -FNDA:0,System.Threading.Tasks.Task`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::CountAsync(JsonApiDotNetCore.Queries.Expressions.FilterExpression) -DA:46,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:53,0 -DA:54,0 -DA:55,0 -FN:57,System.Threading.Tasks.Task JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::CreateAsync(TResource) -FNDA:0,System.Threading.Tasks.Task JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::CreateAsync(TResource) -DA:58,0 -FN:66,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::FlushFromCache(TResource) -FNDA:1,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::FlushFromCache(TResource) -DA:67,1 -FN:80,System.Threading.Tasks.Task JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::UpdateRelationshipAsync(System.Object,JsonApiDotNetCore.Resources.Annotations.RelationshipAttribute,System.Collections.Generic.IReadOnlyCollection`1) -FNDA:1,System.Threading.Tasks.Task JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::UpdateRelationshipAsync(System.Object,JsonApiDotNetCore.Resources.Annotations.RelationshipAttribute,System.Collections.Generic.IReadOnlyCollection`1) -DA:81,1 -FN:83,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::ApplyQueryLayer(JsonApiDotNetCore.Queries.QueryLayer) -FNDA:0,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::ApplyQueryLayer(JsonApiDotNetCore.Queries.QueryLayer) -DA:84,0 -DA:85,0 -DA:87,0 -DA:88,0 -DA:90,0 -DA:91,0 -DA:92,0 -FN:27,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::.ctor(MongoDB.Driver.IMongoDatabase,JsonApiDotNetCore.Resources.ITargetedFields,JsonApiDotNetCore.Configuration.IResourceGraph,JsonApiDotNetCore.Resources.IResourceFactory,System.Collections.Generic.IEnumerable`1) -FNDA:3,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2::.ctor(MongoDB.Driver.IMongoDatabase,JsonApiDotNetCore.Resources.ITargetedFields,JsonApiDotNetCore.Configuration.IResourceGraph,JsonApiDotNetCore.Resources.IResourceFactory,System.Collections.Generic.IEnumerable`1) -DA:28,3 -DA:29,3 -DA:30,3 -DA:31,3 -DA:32,3 -DA:33,3 -DA:34,3 -DA:35,3 -DA:36,3 -DA:37,3 -DA:38,3 -DA:39,3 -DA:40,3 -FN:60,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2/d__12::MoveNext() -FNDA:0,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2/d__12::MoveNext() -DA:61,0 -DA:62,0 -DA:63,0 -DA:64,0 -BRDA:63,248,0,0 -BRDA:63,248,1,0 -FN:69,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2/d__14::MoveNext() -FNDA:0,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2/d__14::MoveNext() -DA:70,0 -FN:72,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2/d__15::MoveNext() -FNDA:1,System.Void JsonApiDotNetCore.MongoDb.MongoEntityRepository`2/d__15::MoveNext() -DA:73,1 -DA:74,5 -DA:75,1 -DA:77,1 -DA:78,1 -BRDA:74,128,1,1 -BRDA:74,128,0,1 -LF:44 -LH:21 -BRF:4 -BRH:2 -FNF:11 -FNH:5 -end_of_record -SF:/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/JsonApiDotNetCore.MongoDb/Queries/Internal/QueryableBuilding/QueryableBuilder.cs -FN:37,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyQuery(JsonApiDotNetCore.Queries.QueryLayer) -FNDA:0,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyQuery(JsonApiDotNetCore.Queries.QueryLayer) -DA:38,0 -DA:39,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:56,0 -DA:57,0 -BRDA:41,19,0,0 -BRDA:41,19,1,0 -BRDA:46,48,0,0 -BRDA:46,48,1,0 -BRDA:51,77,0,0 -BRDA:51,77,1,0 -FN:59,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyFilter(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.FilterExpression) -FNDA:0,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyFilter(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.FilterExpression) -DA:60,0 -DA:61,0 -DA:63,0 -DA:64,0 -DA:65,0 -FN:67,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplySort(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.SortExpression) -FNDA:0,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplySort(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.SortExpression) -DA:68,0 -DA:69,0 -DA:71,0 -DA:72,0 -DA:73,0 -FN:75,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyPagination(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.PaginationExpression) -FNDA:0,System.Linq.Expressions.Expression JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::ApplyPagination(System.Linq.Expressions.Expression,JsonApiDotNetCore.Queries.Expressions.PaginationExpression) -DA:76,0 -DA:77,0 -DA:79,0 -DA:80,0 -DA:81,0 -FN:23,System.Void JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::.ctor(System.Linq.Expressions.Expression,System.Type,System.Type,JsonApiDotNetCore.Queries.Internal.QueryableBuilding.LambdaParameterNameFactory,JsonApiDotNetCore.Resources.IResourceFactory,JsonApiDotNetCore.Configuration.IResourceContextProvider,JsonApiDotNetCore.Queries.Internal.QueryableBuilding.LambdaScopeFactory) -FNDA:0,System.Void JsonApiDotNetCore.MongoDb.Queries.Internal.QueryableBuilding.QueryableBuilder::.ctor(System.Linq.Expressions.Expression,System.Type,System.Type,JsonApiDotNetCore.Queries.Internal.QueryableBuilding.LambdaParameterNameFactory,JsonApiDotNetCore.Resources.IResourceFactory,JsonApiDotNetCore.Configuration.IResourceContextProvider,JsonApiDotNetCore.Queries.Internal.QueryableBuilding.LambdaScopeFactory) -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -BRDA:28,11,0,0 -BRDA:28,11,1,0 -BRDA:29,33,0,0 -BRDA:29,33,1,0 -BRDA:30,55,0,0 -BRDA:30,55,1,0 -BRDA:31,78,0,0 -BRDA:31,78,1,0 -BRDA:32,101,0,0 -BRDA:32,101,1,0 -BRDA:33,124,0,0 -BRDA:33,124,1,0 -BRDA:34,147,0,0 -BRDA:34,147,1,0 -LF:43 -LH:0 -BRF:20 -BRH:0 -FNF:5 -FNH:0 -end_of_record -SF:/Users/mrnkr/Documents/code/JsonApiDotNetCore.MongoDb/src/JsonApiDotNetCore.MongoDb/Extensions/MongoIQueryableExtensions.cs -FN:15,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions::ToMongoQueryable(System.Linq.IQueryable`1) -FNDA:0,MongoDB.Driver.Linq.IMongoQueryable`1 JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions::ToMongoQueryable(System.Linq.IQueryable`1) -DA:16,0 -DA:17,0 -DA:18,0 -BRDA:16,8,0,0 -BRDA:16,8,1,0 -FN:12,System.Void JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions/d__0`1::MoveNext() -FNDA:0,System.Void JsonApiDotNetCore.MongoDb.Extensions.MongoIQueryableExtensions/d__0`1::MoveNext() -DA:13,0 -LF:4 -LH:0 -BRF:2 -BRH:0 -FNF:2 -FNH:0 -end_of_record \ No newline at end of file From dfd167daaab502689c54c2c65417946140e66ba0 Mon Sep 17 00:00:00 2001 From: Alvaro Nicoli Date: Sun, 27 Dec 2020 12:39:25 -0300 Subject: [PATCH 18/18] version bump --- src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj b/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj index 5c843db..21a35bc 100644 --- a/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj +++ b/src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj @@ -1,7 +1,7 @@ - 4.0.0-beta1 + 4.0.0-rc $(NetCoreAppVersion) true