diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 14ba6af..e82f2fd 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,17 +1,17 @@ -# Graph Report - anichron (2026-09-27) +# Graph Report - anichron (2026-10-01) ## Corpus Check -- 228 files · ~82,301 words +- 228 files · ~83,749 words - Verdict: corpus is large enough that graph structure adds value. - Unclassified: 11 file(s) not represented in the graph (top: (none) 6, .props 2, .example 1) ## Summary -- 5817 nodes · 10980 edges · 398 communities (384 shown, 14 thin omitted) -- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 565 edges (avg confidence: 0.84) +- 5826 nodes · 11009 edges · 386 communities (375 shown, 11 thin omitted) +- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 570 edges (avg confidence: 0.84) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `3c0ca799` +- Built from commit: `3d290f7c` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -28,16 +28,16 @@ - Anichron.Worker/packages.lock.json - TestFixture - TestFixture -- IUnitOfWork +- AuthService - net10.0 - User - TestFixture -- WorkerInitializer +- TestFixture - JwtFactoryTests - Anichron.API/packages.lock.json - IAuthResponseMapper - AppIniInitializer -- AuthTokens +- .Ok - WorkerSettings - EfUserRepository - MustChangePasswordMiddleware @@ -50,30 +50,30 @@ - UserStorageConfig - TestFixture - Anichron.API.Settings -- FfmpegVideoProcessorTests -- IIngestionMiddleware +- FfmpegVideoProcessor +- CancellingMiddleware - Anichron.Core.Domain - IngestionContext -- .DeleteAsync +- EfUserStorageConfigRepository - LivePhotoPairItem - Anichron.Infrastructure.Tests.Unit/packages.lock.json - dependencies - .GetConnectionString - net10.0 - Anichron.Core.Tests.Unit/packages.lock.json -- BootstrapResetService +- IUnitOfWork - dependencies -- .ChangePasswordAsync +- PasswordPolicy - Microsoft.VisualStudio.Threading.Analyzers - mutation-ratchet.sh -- LockoutService +- TestFixture - TestFixture - mutation-ratchet.test.sh - Anichron.API - dependencies - net10.0 - .WriteResponseAsync -- ImageProxyMiddleware +- WorkerInitializer - dependencies - Anichron.Core/packages.lock.json - NodaTime @@ -81,10 +81,10 @@ - Microsoft.Extensions.DependencyInjection.Abstractions - Anichron.Worker - WorkerServiceCollectionExtensionsTests -- LoggingMiddleware +- CapturingLogger - Microsoft.Extensions.Primitives - publish-badges.test.sh -- CapturingLogger +- TestFixture - Microsoft.EntityFrameworkCore - .InvokeAsync_KnownHash_DoesNotCallNextAsync - IdempotencyCheckMiddleware @@ -120,12 +120,12 @@ - dependencies - dependencies - System.IO.Abstractions -- 20260511154104_InitialSchema.Designer.cs +- nodatime - dependencies - Container (Dockerfile) - Anichron.Infrastructure/packages.lock.json -- FfmpegVideoProcessor -- WorkerDefaults.cs +- TokenService +- Worker - Microsoft.Extensions.Primitives - publish-badges.sh - Argon2PasswordHasher @@ -158,7 +158,7 @@ - Npgsql.EntityFrameworkCore.PostgreSQL - Metadata - dependencies -- Microsoft.Extensions.Caching.Memory +- Microsoft.Extensions.DependencyInjection - derive-db-docs.test.sh - AssetInteraction - Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime @@ -170,7 +170,7 @@ - NodaTime (No DateTime) Convention - Dependabot GitHub Actions Updates - Dependabot NuGet Updates -- ExifExtractionMiddleware.cs +- EfRefreshTokenRepository - Polly.Extensions - TestableIO.System.IO.Abstractions - Microsoft.IdentityModel.JsonWebTokens @@ -178,7 +178,7 @@ - Microsoft.Extensions.Caching.Abstractions - TestableIO.System.IO.Abstractions - MediaAsset Entity -- Microsoft.CodeAnalysis.Analyzers +- TestFixture - Anichron.Worker - CLAUDE.md - Anichron.Worker Project @@ -198,9 +198,9 @@ - xunit.v3.mtp-v1 - Blurhash.ImageSharp - System.IO.Abstractions -- ImageProcessor.cs +- microsoft_extensions_options - Microsoft.NET.Test.Sdk -- IMediaAssetRepository +- JwtSettings - xunit.v3.mtp-v1 - Issue tracker: GitHub - Anichron.API.Tests.Unit/GlobalUsings.cs @@ -212,7 +212,7 @@ - Microsoft.Extensions.Http.Diagnostics - Microsoft.IdentityModel.Protocols.OpenIdConnect - Microsoft.TestPlatform.TestHost -- Microsoft.Extensions.DependencyInjection.AutoActivation +- ServiceCollectionExtensions.cs - System.IO.Abstractions.TestingHelpers - xunit.v3 - Npgsql.NodaTime @@ -240,14 +240,14 @@ - mutation-report.sh - Microsoft.IdentityModel.Logging - Microsoft.IdentityModel.Tokens -- Schema documentation is generated, and its rationale lives in the schema +- LockoutService - Mono.TextTemplating - Castle.Core - xunit.v3.common - Castle.Core - xunit.v3.common - Blurhash.Core -- .RunAsync +- RefreshToken - Mono.TextTemplating - Blurhash.Core - Blurhash.ImageSharp @@ -256,8 +256,8 @@ - Architecture - CI Build & Test Job - mutation-report.test.sh -- AuthCookieSettings -- Polly.Core +- .DeleteAsync +- MediaType - Humanizer.Core - Npgsql - Roslynator.Analyzers @@ -299,25 +299,29 @@ - xunit.runner.visualstudio - Microsoft.Extensions.Hosting - Microsoft.VisualStudio.Threading.Analyzers -- ExifData +- CapturingLogger - SonarAnalyzer.CSharp - Microsoft.VisualStudio.Threading.Analyzers - FluentAssertions - Microsoft.Extensions.Caching.Abstractions -- IngestionPipelineRunner +- IIngestionMiddleware - Microsoft.Extensions.DependencyInjection - PersistenceMiddleware -- Microsoft.VisualStudio.Threading.Analyzers +- LivePhotoLinker - Roslynator.Analyzers +- dependencies - Microsoft.EntityFrameworkCore - Self-host mutation reports; do not use the Stryker Dashboard +- IMediaAssetRepository - System.IO.Hashing -- CapturingLogger +- .ItemFailed +- .Log +- .IsInProgress - coverlet.collector - Microsoft.IdentityModel.Abstractions -- Roslynator.Analyzers +- AuthCookieSettings - Newtonsoft.Json -- Microsoft.Extensions.FileProviders.Abstractions +- Microsoft.Extensions.Configuration.Abstractions - Anichron.Core.Tests.Unit - System.Composition.Runtime - SonarAnalyzer.CSharp @@ -329,23 +333,26 @@ - Microsoft.Extensions.Primitives - Microsoft.EntityFrameworkCore.Abstractions - Microsoft.Win32.Registry +- Microsoft.CodeAnalysis.Analyzers - Microsoft.Extensions.Diagnostics.ExceptionSummarization -- .BuildWithMiddlewares -- AuthMessages.cs +- ImageProxyMiddleware +- Microsoft.Extensions.DependencyInjection.AutoActivation +- Polly.Core - assemble-pages.test.sh - Microsoft.VisualStudio.SolutionPersistence - Microsoft.Extensions.DependencyInjection.AutoActivation - Microsoft.EntityFrameworkCore.Abstractions -- .ExecuteInTransactionAsync -- MediaTypeDetectorTests.cs -- Microsoft.Extensions.Logging.Console +- Microsoft.EntityFrameworkCore.Abstractions +- Microsoft.Extensions.DependencyInjection.Abstractions +- Microsoft.Extensions.Logging +- Microsoft.Extensions.Logging.EventLog - Microsoft.Extensions.FileSystemGlobbing -- Castle.Core +- Microsoft.EntityFrameworkCore.Analyzers - Microsoft.VisualStudio.SolutionPersistence - Microsoft.Extensions.ObjectPool -- Microsoft.Extensions.Logging.Abstractions +- Microsoft.Extensions.FileSystemGlobbing - Microsoft.Extensions.Logging.EventLog -- xunit.runner.visualstudio +- Microsoft.Extensions.Logging.Configuration - Microsoft.OpenApi - Newtonsoft.Json - Humanizer.Core @@ -377,48 +384,29 @@ - Testably.Abstractions.FileSystem.Interface - assemble-pages.sh - Microsoft.Build.Framework -- System.CodeDom +- Microsoft.NETCore.Platforms - Microsoft.Extensions.DependencyModel -- Microsoft.CodeCoverage +- Testably.Abstractions.FileSystem.Interface - Microsoft.Bcl.AsyncInterfaces -- Microsoft.Extensions.Caching.Memory -- Humanizer.Core -- Microsoft.Extensions.Configuration.CommandLine -- Microsoft.Extensions.Configuration.FileExtensions +- ExifData - Microsoft.EntityFrameworkCore.Abstractions -- Microsoft.CodeAnalysis.Analyzers -- Microsoft.Extensions.Diagnostics.Abstractions - Microsoft.Extensions.Diagnostics - Microsoft.Extensions.Hosting.Abstractions -- Microsoft.Extensions.Configuration.Binder -- Microsoft.Extensions.FileProviders.Physical -- Microsoft.Extensions.Logging.Console -- Microsoft.Extensions.Logging -- Microsoft.Extensions.Logging.EventSource -- Microsoft.Extensions.Logging.EventLog - Microsoft.NETCore.Platforms - Microsoft.Extensions.Options.ConfigurationExtensions -- Microsoft.Extensions.Options - Microsoft.TestPlatform.ObjectModel -- Microsoft.Extensions.Logging.Configuration -- System.Diagnostics.EventLog -- Microsoft.Extensions.Options.ConfigurationExtensions - xunit.v3.assert - Microsoft.Extensions.Primitives -- System.Composition.Runtime - Newtonsoft.Json -- Microsoft.Extensions.Configuration.Json - triage-labels.md - pre-commit - pre-push -- Microsoft.Win32.Registry - XmpCore -- xunit.analyzers ## God Nodes (most connected - your core abstractions) 1. `UserStorageConfig` - 82 edges 2. `IngestionContext` - 82 edges -3. `TestFixture` - 78 edges +3. `TestFixture` - 79 edges 4. `net10.0` - 77 edges 5. `net10.0` - 76 edges 6. `Anichron.Core.Domain` - 74 edges @@ -447,23 +435,23 @@ - **CI Pipeline: Build/Test then Pages and Docker** — github_workflows_ci_build_and_test, github_workflows_ci_deploy_pages, github_workflows_ci_docker_job [EXTRACTED 1.00] - **MediaAsset-Centric Domain Graph** — claude_md_mediaasset, claude_md_metadata, claude_md_proxyfile, claude_md_burst, claude_md_assetinteraction [EXTRACTED 1.00] -## Communities (398 total, 14 thin omitted) +## Communities (386 total, 11 thin omitted) ### Community 0 - "TestFixture" Cohesion: 0.06 Nodes (43): ArgumentNullException, GeneratedRegex, Regex, AuthError, AccountDisabled, AccountTemporarilyLocked, CannotModifySelf, EmailTaken (+35 more) ### Community 1 - "AuthResponseMapperTests" -Cohesion: 0.11 -Nodes (26): Created, JsonOptions, AdminStorageConfigResponse, AdminUserResponse, PasswordPolicy, CheckPwnedPasswords, MaxLength, MinLength (+18 more) +Cohesion: 0.12 +Nodes (21): Created, JsonOptions, AdminStorageConfigResponse, AdminUserResponse, AuthTokens, AuthResponseMapperTests, TestFixture, DefaultHttpContext (+13 more) ### Community 2 - "AuthResult" -Cohesion: 0.12 -Nodes (14): AuthResponseMapper, HttpContext, IClock, IResult, List, AuthResult, Error, IsSuccess (+6 more) +Cohesion: 0.13 +Nodes (10): AuthResponseMapper, HttpContext, IClock, IResult, List, AuthResult, Error, IsSuccess (+2 more) ### Community 3 - "IngestionPipelineRunnerTests" -Cohesion: 0.21 -Nodes (18): IngestionPipelineRunnerTests, ProxyDirectoryCreatingMiddleware, Order, ProxyWritingMiddleware, Order, TestFixture, DirectoryStrategy, FileSystem (+10 more) +Cohesion: 0.17 +Nodes (21): IngestionPipelineRunnerTests, ProxyDirectoryCreatingMiddleware, Order, ProxyWritingMiddleware, Order, StubMiddleware, Order, TestFixture (+13 more) ### Community 4 - "Anichron" Cohesion: 0.17 @@ -478,8 +466,8 @@ Cohesion: 0.08 Nodes (27): Directory, ExifIfd0Directory, ExifSubIfdDirectory, GpsDirectory, Latitude, LocalDateTimePattern, Longitude, QuickTimeMovieHeaderDirectory (+19 more) ### Community 7 - "TestFixture" -Cohesion: 0.08 -Nodes (35): TestFixture, Tokens, UnitOfWork, TokenServiceTests, Action, CancellationToken, Fact, IClock (+27 more) +Cohesion: 0.20 +Nodes (13): TestFixture, Tokens, UnitOfWork, TokenServiceTests, Action, CancellationToken, Fact, IClock (+5 more) ### Community 8 - "Anichron.Worker.Tests.Unit/packages.lock.json" Cohesion: 0.03 @@ -497,29 +485,29 @@ Nodes (23): BootstrapSeeder, IBootstrapSeeder, Log, CancellationToken, Exception Cohesion: 0.19 Nodes (14): PersistenceMiddlewareTests, TestFixture, Clock, FileSystem, GuidFactory, Now, Repository, UnitOfWork (+6 more) -### Community 12 - "IUnitOfWork" -Cohesion: 0.07 -Nodes (30): PostgresException, AdminPasswordResetResponse, IPasswordHasher, AdminResetService, AdminUserPasswordReset, IAdminResetService, CancellationToken, Guid (+22 more) +### Community 12 - "AuthService" +Cohesion: 0.10 +Nodes (20): PostgresException, AdminPasswordResetResponse, IPasswordHasher, AdminResetService, AdminUserPasswordReset, IAdminResetService, CancellationToken, Guid (+12 more) ### Community 13 - "net10.0" -Cohesion: 0.04 -Nodes (55): dependencies, net10.0, contentHash, resolved, type, contentHash, resolved, type (+47 more) +Cohesion: 0.03 +Nodes (64): dependencies, net10.0, contentHash, resolved, type, contentHash, resolved, type (+56 more) ### Community 14 - "User" -Cohesion: 0.22 +Cohesion: 0.25 Nodes (6): IUserRepository, CancellationToken, Guid, List, Task, User ### Community 15 - "TestFixture" Cohesion: 0.06 Nodes (49): MediaType, Image, LivePhoto, Video, IImageProcessor, ImageSharpProcessor, CancellationToken, Image (+41 more) -### Community 16 - "WorkerInitializer" -Cohesion: 0.06 -Nodes (35): IHostedService, WorkerState, ResolvedUserId, Guid, DatabaseMigratorService, RetryDelay, Log, CancellationToken (+27 more) +### Community 16 - "TestFixture" +Cohesion: 0.12 +Nodes (20): IHostedService, DatabaseMigratorService, RetryDelay, Log, CancellationToken, Exception, ILogger, IServiceScopeFactory (+12 more) ### Community 17 - "JwtFactoryTests" -Cohesion: 0.12 -Nodes (21): JwtSecurityToken, JwtSecurityTokenHandler, SecurityTokenInvalidSignatureException, SigningCredentials, IJwtFactory, JwtFactory, IClock, IGuidFactory (+13 more) +Cohesion: 0.25 +Nodes (9): JwtSecurityToken, SecurityTokenInvalidSignatureException, JwtFactoryTests, TestFixture, Fact, Guid, IClock, IGuidFactory (+1 more) ### Community 18 - "Anichron.API/packages.lock.json" Cohesion: 0.04 @@ -527,22 +515,22 @@ Nodes (54): Konscious.Security.Cryptography.Blake2, Microsoft.Extensions.Http.Di ### Community 19 - "IAuthResponseMapper" Cohesion: 0.11 -Nodes (30): AdminCreatedUserResponse, AdminEndpoints, CreateAdminUserRequest, CreateStorageConfigRequest, PatchAdminUserRequest, CancellationToken, ClaimsPrincipal, Guid (+22 more) +Nodes (29): AdminCreatedUserResponse, AdminEndpoints, CreateAdminUserRequest, CreateStorageConfigRequest, PatchAdminUserRequest, CancellationToken, ClaimsPrincipal, Guid (+21 more) ### Community 20 - "AppIniInitializer" -Cohesion: 0.14 -Nodes (16): IDirectory, IFileStreamFactory, IPath, AppIniInitializer, IniEntry, Func, IFileSystem, IReadOnlyList (+8 more) +Cohesion: 0.15 +Nodes (15): IDirectory, IFileStreamFactory, IPath, AppIniInitializer, IniEntry, Func, IFileSystem, IReadOnlyList (+7 more) -### Community 21 - "AuthTokens" -Cohesion: 0.17 -Nodes (20): microsoft_aspnetcore_mvc, AuthEndpoints, LoginRequest, RefreshRequest, RegisterRequest, CancellationToken, HttpContext, IEndpointRouteBuilder (+12 more) +### Community 21 - ".Ok" +Cohesion: 0.16 +Nodes (22): AuthEndpoints, LoginRequest, RefreshRequest, RegisterRequest, CancellationToken, HttpContext, IEndpointRouteBuilder, IOptions (+14 more) ### Community 22 - "WorkerSettings" -Cohesion: 0.08 -Nodes (20): Anichron.Worker.Tests.Unit.Settings, WorkerSettings, BlurhashSampleWidth, CrawlIntervalHours, FfmpegPath, MaxConcurrentFiles, PreviewJpegQuality, PreviewMaxWidth (+12 more) +Cohesion: 0.11 +Nodes (17): Anichron.Worker.Tests.Unit.Settings, WorkerSettings, BlurhashSampleWidth, CrawlIntervalHours, FfmpegPath, MaxConcurrentFiles, PreviewJpegQuality, PreviewMaxWidth (+9 more) ### Community 23 - "EfUserRepository" -Cohesion: 0.30 +Cohesion: 0.28 Nodes (5): EfUserRepository, AnichronDbContext, UserRepositoryTests, Fact, Task ### Community 24 - "MustChangePasswordMiddleware" @@ -550,16 +538,16 @@ Cohesion: 0.20 Nodes (15): Claim, HttpRequest, Method, Path, PathString, RequestDelegate, MustChangePasswordMiddleware, HttpContext (+7 more) ### Community 25 - "SingleFileItem" -Cohesion: 0.20 -Nodes (14): DirectoryNotFoundException, SingleFileItem, PrimaryMediaType, SecondaryFile, FileIngestionPipelineTests, TestFixture, FileSystem, ProcessedContexts (+6 more) +Cohesion: 0.24 +Nodes (12): DirectoryNotFoundException, SingleFileItem, PrimaryMediaType, SecondaryFile, FileIngestionPipelineTests, TestFixture, FileSystem, ProcessedContexts (+4 more) ### Community 26 - "LockoutServiceTests" Cohesion: 0.39 Nodes (5): LockoutServiceTests, TestFixture, Fact, Instant, Task ### Community 27 - "FileIngestionPipeline" -Cohesion: 0.05 -Nodes (44): ChannelReader, ChannelWriter, IList, IReadOnlySet, MediaType, FileIngestionPipeline, IFileIngestionPipeline, Log (+36 more) +Cohesion: 0.22 +Nodes (13): ChannelReader, ChannelWriter, IList, FileIngestionPipeline, IFileIngestionPipeline, CancellationToken, IFileSystem, IOptions (+5 more) ### Community 28 - "Anichron.API.Tests.Unit/packages.lock.json" Cohesion: 0.04 @@ -570,52 +558,52 @@ Cohesion: 0.30 Nodes (10): BootstrapResetServiceTests, TestFixture, UnitOfWork, Users, CancellationToken, Fact, IConfiguration, ILogger (+2 more) ### Community 30 - "Microsoft.Extensions.Configuration.Abstractions" -Cohesion: 0.05 -Nodes (53): Microsoft.Extensions.Configuration, Microsoft.Extensions.Configuration.Abstractions, Microsoft.Extensions.Configuration.FileExtensions, Microsoft.Extensions.Configuration.Json, Microsoft.Extensions.Diagnostics.Abstractions, Microsoft.Extensions.FileProviders.Abstractions, Microsoft.Extensions.FileProviders.Physical, contentHash (+45 more) +Cohesion: 0.07 +Nodes (35): Microsoft.Extensions.Configuration, Microsoft.Extensions.Configuration.Abstractions, Microsoft.Extensions.Configuration.FileExtensions, Microsoft.Extensions.Configuration.Json, contentHash, dependencies, resolved, type (+27 more) ### Community 31 - "UserStorageConfig" -Cohesion: 0.06 -Nodes (57): AdminStorageConfigServiceTests, TestFixture, GuidFactory, StorageConfigs, UnitOfWork, Users, CancellationToken, Fact (+49 more) +Cohesion: 0.17 +Nodes (14): IUserStorageConfigRepository, CancellationToken, Guid, List, Task, UserStorageConfig, Assets, Id (+6 more) ### Community 32 - "TestFixture" -Cohesion: 0.27 -Nodes (11): AdminUserServiceTests, TestFixture, TokenService, UnitOfWork, Users, CancellationToken, Fact, Guid (+3 more) +Cohesion: 0.22 +Nodes (15): AdminUserServiceTests, TestFixture, RevokedInsideTransaction, SavedInsideTransaction, TokenService, UnitOfWork, Users, CancellationToken (+7 more) ### Community 33 - "Anichron.API.Settings" -Cohesion: 0.07 -Nodes (26): Anichron.API.Tests.Unit.Security, Anichron.API.Tests.Unit.Infrastructure, Anichron.API.Endpoints, Anichron.API.Infrastructure, Anichron.API.Settings, Anichron.API.Tests.Unit.Endpoints, konscious_security_cryptography, microsoft_aspnetcore_authentication_jwtbearer (+18 more) +Cohesion: 0.09 +Nodes (18): Anichron.API.Tests.Unit.Infrastructure, Anichron.API.Endpoints, Anichron.API.Infrastructure, Anichron.API.Settings, Anichron.API.Tests.Unit.Endpoints, microsoft_aspnetcore_diagnostics_healthchecks, microsoft_aspnetcore_http, microsoft_aspnetcore_http_json (+10 more) -### Community 34 - "FfmpegVideoProcessorTests" -Cohesion: 0.28 -Nodes (11): Exception, FfmpegException, ExitCode, Stderr, FfmpegVideoProcessorTests, TestFixture, Launcher, CancellationToken (+3 more) +### Community 34 - "FfmpegVideoProcessor" +Cohesion: 0.08 +Nodes (35): Exception, SemaphoreSlim, IProcessLauncher, ProcessResult, SystemProcessLauncher, CancellationToken, IReadOnlyList, Task (+27 more) -### Community 35 - "IIngestionMiddleware" -Cohesion: 0.12 -Nodes (12): IIngestionMiddleware, Order, IngestionOrder, CancellationToken, IngestionDelegate, Task, CancellingMiddleware, Order (+4 more) +### Community 35 - "CancellingMiddleware" +Cohesion: 0.25 +Nodes (5): CancellingMiddleware, Order, CancellationToken, CancellationTokenSource, IngestionDelegate ### Community 36 - "Anichron.Core.Domain" Cohesion: 0.13 -Nodes (16): Anichron.API.Tests.Unit.Services, Anichron.API.Security, Anichron.Infrastructure.Tests.Unit.Infrastructure, Anichron.Core.Tests.Unit.Data.Repository, Anichron.Core.Data, Anichron.Core.Domain, Anichron.API.Services, Anichron.Core.Data.Repository (+8 more) +Nodes (15): Anichron.API.Tests.Unit.Services, Anichron.API.Security, Anichron.Core.Tests.Unit.Data.Repository, Anichron.Core.Data, Anichron.Core.Domain, Anichron.API.Services, Anichron.Core.Data.Repository, microsoft_entityframeworkcore (+7 more) ### Community 37 - "IngestionContext" Cohesion: 0.07 Nodes (25): Lock, IngestionContext, Asset, AssetId, Config, ContentHash, Exif, Item (+17 more) -### Community 38 - ".DeleteAsync" -Cohesion: 0.32 -Nodes (6): AdminUserService, CancellationToken, Guid, IClock, List, Task +### Community 38 - "EfUserStorageConfigRepository" +Cohesion: 0.37 +Nodes (6): EfUserStorageConfigRepository, AnichronDbContext, UserStorageConfigRepositoryTests, Fact, Guid, Task ### Community 39 - "LivePhotoPairItem" -Cohesion: 0.26 -Nodes (6): LivePhotoPairItem, PrimaryMediaType, SecondaryFile, LivePhotoLinkerTests, Fact, MockFileSystem +Cohesion: 0.23 +Nodes (7): LivePhotoPairItem, PrimaryMediaType, SecondaryFile, SecondaryFileDescriptor, LivePhotoLinkerTests, Fact, MockFileSystem ### Community 40 - "Anichron.Infrastructure.Tests.Unit/packages.lock.json" Cohesion: 0.04 Nodes (47): Castle.Core, Microsoft.ApplicationInsights, Microsoft.Bcl.AsyncInterfaces, Microsoft.CodeCoverage, Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.Abstractions, Microsoft.EntityFrameworkCore.Analyzers, Microsoft.EntityFrameworkCore.Relational (+39 more) ### Community 41 - "dependencies" -Cohesion: 0.06 -Nodes (47): Microsoft.Extensions.Caching.Abstractions, Microsoft.Extensions.Configuration.Binder, Microsoft.Extensions.Configuration.CommandLine, Microsoft.Extensions.Configuration.EnvironmentVariables, Microsoft.Extensions.Configuration.UserSecrets, Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.DependencyInjection.Abstractions, Microsoft.Extensions.Diagnostics (+39 more) +Cohesion: 0.05 +Nodes (54): Microsoft.Extensions.Caching.Abstractions, Microsoft.Extensions.Configuration.Binder, Microsoft.Extensions.Configuration.CommandLine, Microsoft.Extensions.Configuration.EnvironmentVariables, Microsoft.Extensions.Configuration.UserSecrets, Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.DependencyInjection.Abstractions, Microsoft.Extensions.Diagnostics (+46 more) ### Community 42 - ".GetConnectionString" Cohesion: 0.26 @@ -629,17 +617,17 @@ Nodes (57): contentHash, requested, resolved, type, dependencies, net10.0, conte Cohesion: 0.05 Nodes (43): Castle.Core, Microsoft.ApplicationInsights, Microsoft.Bcl.AsyncInterfaces, Microsoft.CodeCoverage, Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.Abstractions, Microsoft.EntityFrameworkCore.Analyzers, Microsoft.EntityFrameworkCore.Relational (+35 more) -### Community 45 - "BootstrapResetService" -Cohesion: 0.23 -Nodes (8): BootstrapResetService, IBootstrapResetService, Log, CancellationToken, IConfiguration, ILogger, LoggerMessage, Task +### Community 45 - "IUnitOfWork" +Cohesion: 0.19 +Nodes (9): BootstrapResetService, IBootstrapResetService, Log, CancellationToken, IConfiguration, ILogger, LoggerMessage, Task (+1 more) ### Community 46 - "dependencies" Cohesion: 0.06 Nodes (44): Humanizer.Core, Microsoft.Build.Framework, Microsoft.CodeAnalysis.Analyzers, Microsoft.CodeAnalysis.Common, Microsoft.CodeAnalysis.CSharp, Microsoft.CodeAnalysis.CSharp.Workspaces, Microsoft.CodeAnalysis.Workspaces.Common, Microsoft.CodeAnalysis.Workspaces.MSBuild (+36 more) -### Community 47 - ".ChangePasswordAsync" -Cohesion: 0.16 -Nodes (19): NotFound, ChangePasswordRequest, UserEndpoints, UserProfileResponse, CancellationToken, ClaimsPrincipal, Guid, IEndpointRouteBuilder (+11 more) +### Community 47 - "PasswordPolicy" +Cohesion: 0.13 +Nodes (25): NotFound, ChangePasswordRequest, UserEndpoints, UserProfileResponse, CancellationToken, ClaimsPrincipal, Guid, IEndpointRouteBuilder (+17 more) ### Community 48 - "Microsoft.VisualStudio.Threading.Analyzers" Cohesion: 0.40 @@ -649,13 +637,13 @@ Nodes (5): contentHash, requested, resolved, type, Microsoft.VisualStudio.Thread Cohesion: 0.57 Nodes (7): cmd_advance(), cmd_thresholds(), config_threshold(), read_mark(), mutation-ratchet.sh script, SLACK, usage() -### Community 50 - "LockoutService" -Cohesion: 0.22 -Nodes (7): ILockoutService, LockoutService, CancellationToken, Instant, Task, InlineData, Theory +### Community 50 - "TestFixture" +Cohesion: 0.23 +Nodes (13): AdminStorageConfigServiceTests, TestFixture, GuidFactory, StorageConfigs, UnitOfWork, Users, CancellationToken, Fact (+5 more) ### Community 51 - "TestFixture" -Cohesion: 0.07 -Nodes (39): Log, VideoProxyMiddleware, Order, CancellationToken, IEnumerable, ILogger, IngestionDelegate, LoggerMessage (+31 more) +Cohesion: 0.10 +Nodes (27): Log, VideoProxyMiddleware, Order, IEnumerable, ILogger, LoggerMessage, IVideoProxyGenerator, FileName (+19 more) ### Community 52 - "mutation-ratchet.test.sh" Cohesion: 0.81 @@ -670,16 +658,16 @@ Cohesion: 0.06 Nodes (44): Humanizer.Core, Microsoft.Build.Framework, Microsoft.CodeAnalysis.Analyzers, Microsoft.CodeAnalysis.Common, Microsoft.CodeAnalysis.CSharp, Microsoft.CodeAnalysis.CSharp.Workspaces, Microsoft.CodeAnalysis.Workspaces.Common, Microsoft.CodeAnalysis.Workspaces.MSBuild (+36 more) ### Community 55 - "net10.0" -Cohesion: 0.04 -Nodes (47): dependencies, net10.0, contentHash, resolved, type, contentHash, resolved, type (+39 more) +Cohesion: 0.05 +Nodes (44): dependencies, net10.0, contentHash, resolved, type, contentHash, resolved, type (+36 more) ### Community 56 - ".WriteResponseAsync" -Cohesion: 0.27 -Nodes (9): HealthReport, HttpContext, Task, HealthCheckResponseWriterTests, DefaultHttpContext, Fact, HealthReport, HttpResponse (+1 more) +Cohesion: 0.25 +Nodes (10): HealthCheckResponseWriter, HealthReport, HttpContext, Task, HealthCheckResponseWriterTests, DefaultHttpContext, Fact, HealthReport (+2 more) -### Community 57 - "ImageProxyMiddleware" -Cohesion: 0.15 -Nodes (11): ImageProxyMiddleware, Order, Log, CancellationToken, IEnumerable, IFileSystem, ILogger, IngestionDelegate (+3 more) +### Community 57 - "WorkerInitializer" +Cohesion: 0.17 +Nodes (11): WorkerState, ResolvedUserId, Guid, Log, WorkerInitializer, CancellationToken, ILogger, IOptions (+3 more) ### Community 58 - "dependencies" Cohesion: 0.07 @@ -694,8 +682,8 @@ Cohesion: 0.40 Nodes (5): NodaTime, contentHash, requested, resolved, type ### Community 61 - "Microsoft.Extensions.DependencyInjection.Abstractions" -Cohesion: 0.11 -Nodes (37): Microsoft.Extensions.Caching.Abstractions, Microsoft.Extensions.Configuration, Microsoft.Extensions.Configuration.Abstractions, Microsoft.Extensions.Configuration.Binder, Microsoft.Extensions.Configuration.FileExtensions, Microsoft.Extensions.Configuration.Json, Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.DependencyInjection.Abstractions (+29 more) +Cohesion: 0.05 +Nodes (52): contentHash, dependencies, resolved, type, Microsoft.Extensions.Caching.Abstractions, Microsoft.Extensions.Configuration.Binder, Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.DependencyInjection.Abstractions (+44 more) ### Community 62 - "Microsoft.Extensions.DependencyInjection.Abstractions" Cohesion: 0.05 @@ -705,9 +693,9 @@ Nodes (56): contentHash, dependencies, resolved, type, Microsoft.Extensions.Conf Cohesion: 0.15 Nodes (13): Blurhash.ImageSharp, MetadataExtractor, Microsoft.Extensions.Hosting, Microsoft.Extensions.Options.DataAnnotations, SixLabors.ImageSharp, System.IO.Hashing, Microsoft.NET.Sdk.Worker, Anichron.Worker (+5 more) -### Community 65 - "LoggingMiddleware" -Cohesion: 0.28 -Nodes (9): LoggingMiddleware, Order, CancellationToken, IngestionDelegate, Task, LoggingMiddlewareTests, Fact, InvalidOperationException (+1 more) +### Community 65 - "CapturingLogger" +Cohesion: 0.16 +Nodes (17): ILogger, LoggingMiddleware, Order, CancellationToken, IngestionDelegate, Task, CapturingLogger, Entries (+9 more) ### Community 66 - "Microsoft.Extensions.Primitives" Cohesion: 0.07 @@ -717,9 +705,9 @@ Nodes (27): Microsoft.Extensions.Caching.Abstractions, Microsoft.Extensions.Prim Cohesion: 0.87 Nodes (5): assert_absent_on_badges(), assert_eq(), fail(), pass(), publish-badges.test.sh script -### Community 68 - "CapturingLogger" -Cohesion: 0.18 -Nodes (10): ILogger, CapturingLogger, Entries, EventId, Exception, Func, IDisposable, IReadOnlyList (+2 more) +### Community 68 - "TestFixture" +Cohesion: 0.22 +Nodes (13): TestFixture, StorageConfigRepository, UnitOfWork, UserRepository, WorkerState, WorkerInitializerTests, CancellationToken, Fact (+5 more) ### Community 69 - "Microsoft.EntityFrameworkCore" Cohesion: 0.09 @@ -735,15 +723,15 @@ Nodes (9): IdempotencyCheckMiddleware, Order, Log, CancellationToken, ILogger, I ### Community 72 - "TestFixture" Cohesion: 0.05 -Nodes (42): MockFile, MockFileSystem, IGuidFactory, TimeOrderedGuidFactory, ProxyFileBuilder, IClock, ProxyType, Log (+34 more) +Nodes (43): MockFile, MockFileSystem, IGuidFactory, TimeOrderedGuidFactory, Guid, ProxyFileBuilder, IClock, ProxyType (+35 more) ### Community 73 - "TestFixture" Cohesion: 0.15 Nodes (18): HttpClient, IPwnedPasswordClient, Log, PwnedPasswordClient, CancellationToken, Exception, ILogger, LoggerMessage (+10 more) ### Community 74 - "Anichron.Infrastructure.Data" -Cohesion: 0.17 -Nodes (8): Anichron.Infrastructure.Data, DatabaseFacade, DatabaseFacadeExtensions, CancellationToken, Task, PostgresConstants, SuppressMessage, system_diagnostics_codeanalysis +Cohesion: 0.13 +Nodes (12): Anichron.Infrastructure.Data, DatabaseFacade, DatabaseFacadeExtensions, CancellationToken, Task, PostgresConstants, EfDatabaseMigrator, IDatabaseMigrator (+4 more) ### Community 75 - "Microsoft.Extensions.Primitives" Cohesion: 0.06 @@ -830,8 +818,8 @@ Cohesion: 0.19 Nodes (13): HealthCheckResult, IHealthCheck, ProxyStorageHealthCheck, CancellationToken, HealthCheckContext, IFileSystem, Task, ProxyStorageHealthCheckTests (+5 more) ### Community 96 - "Microsoft.Extensions.Primitives" -Cohesion: 0.07 -Nodes (27): Microsoft.Extensions.FileSystemGlobbing, Microsoft.Extensions.Primitives, contentHash, dependencies, resolved, type, contentHash, dependencies (+19 more) +Cohesion: 0.06 +Nodes (34): Microsoft.Extensions.FileProviders.Abstractions, Microsoft.Extensions.FileProviders.Physical, Microsoft.Extensions.FileSystemGlobbing, Microsoft.Extensions.Primitives, contentHash, dependencies, resolved, type (+26 more) ### Community 97 - "ApiPaths" Cohesion: 0.33 @@ -861,9 +849,9 @@ Nodes (24): dependencies, type, Microsoft.EntityFrameworkCore, Microsoft.EntityF Cohesion: 0.08 Nodes (24): TestableIO.System.IO.Abstractions, TestableIO.System.IO.Abstractions.Wrappers, Testably.Abstractions.FileSystem.Interface, System.IO.Abstractions, TestableIO.System.IO.Abstractions, TestableIO.System.IO.Abstractions.TestingHelpers, TestableIO.System.IO.Abstractions.Wrappers, contentHash (+16 more) -### Community 104 - "20260511154104_InitialSchema.Designer.cs" -Cohesion: 0.09 -Nodes (23): Anichron.Core.Migrations, microsoft_entityframeworkcore_infrastructure, microsoft_entityframeworkcore_migrations, microsoft_entityframeworkcore_storage_valueconversion, Migration, npgsql_entityframeworkcore_postgresql_metadata, Guid, Instant (+15 more) +### Community 104 - "nodatime" +Cohesion: 0.08 +Nodes (25): Anichron.Core.Migrations, Why the rationale goes in `COMMENT`, not in Markdown, microsoft_entityframeworkcore_infrastructure, microsoft_entityframeworkcore_migrations, microsoft_entityframeworkcore_storage_valueconversion, Migration, nodatime, npgsql_entityframeworkcore_postgresql_metadata (+17 more) ### Community 105 - "dependencies" Cohesion: 0.09 @@ -877,21 +865,25 @@ Nodes (21): commandName, environmentVariables, launchUrl, publishAllPorts, useSS Cohesion: 0.09 Nodes (21): Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.Abstractions, Microsoft.EntityFrameworkCore.Analyzers, Microsoft.Extensions.Caching.Abstractions, Microsoft.Extensions.Caching.Memory, Microsoft.Extensions.Configuration, Microsoft.Extensions.Configuration.Abstractions, Microsoft.Extensions.Configuration.FileExtensions (+13 more) -### Community 108 - "FfmpegVideoProcessor" -Cohesion: 0.24 -Nodes (8): SemaphoreSlim, FfmpegVideoProcessor, Log, CancellationToken, ILogger, IOptions, LoggerMessage, Task +### Community 108 - "TokenService" +Cohesion: 0.25 +Nodes (9): ITokenService, TokenService, CancellationToken, Guid, IClock, IGuidFactory, Instant, IOptions (+1 more) + +### Community 109 - "Worker" +Cohesion: 0.20 +Nodes (10): Log, Worker, CancellationToken, Guid, ILogger, IOptions, IServiceScopeFactory, LoggerMessage (+2 more) ### Community 110 - "Microsoft.Extensions.Primitives" Cohesion: 0.10 Nodes (21): Microsoft.Extensions.Caching.Abstractions, Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.Logging.Abstractions, Microsoft.Extensions.Options, Microsoft.Extensions.Primitives, contentHash, dependencies, resolved (+13 more) ### Community 112 - "Argon2PasswordHasher" -Cohesion: 0.25 +Cohesion: 0.24 Nodes (7): FormatException, Argon2PasswordHasher, PasswordHasherTests, Exception, Fact, InlineData, Theory ### Community 113 - "AnichronDbContext" -Cohesion: 0.12 -Nodes (17): DbContext, DbContextOptions, DbSet, IDesignTimeDbContextFactory, AnichronDbContext, Bursts, Interactions, Invites (+9 more) +Cohesion: 0.09 +Nodes (20): DbContext, DbContextOptions, DbSet, IDesignTimeDbContextFactory, AnichronDbContext, Bursts, Interactions, Invites (+12 more) ### Community 114 - "dependencies" Cohesion: 0.11 @@ -905,6 +897,10 @@ Nodes (32): Consequences, Mutation testing with Stryker.NET on the Microsoft.Tes Cohesion: 0.11 Nodes (19): dependencies, net10.0, contentHash, resolved, type, contentHash, dependencies, resolved (+11 more) +### Community 117 - "WorkerSettingsValidatorTests" +Cohesion: 0.23 +Nodes (4): WorkerSettingsValidatorTests, Fact, IReadOnlyList, ValidationResult + ### Community 118 - ".Placeholder_Always_Passes" Cohesion: 0.33 Nodes (4): Anichron.API.Tests.Unit, PlaceholderTest, Fact, IDisposable @@ -914,12 +910,12 @@ Cohesion: 0.11 Nodes (18): Microsoft.IdentityModel.JsonWebTokens, Microsoft.IdentityModel.Tokens, contentHash, dependencies, resolved, type, contentHash, dependencies (+10 more) ### Community 120 - "TestFixture" -Cohesion: 0.14 -Nodes (17): TestFixture, Clock, Now, Repository, ScopeFactory, TokenCleanupServiceTests, CancellationToken, Fact (+9 more) +Cohesion: 0.16 +Nodes (16): TestFixture, Clock, Now, Repository, ScopeFactory, TokenCleanupServiceTests, CancellationToken, Fact (+8 more) ### Community 121 - "Anichron.Worker.Ingestion.Pipeline" -Cohesion: 0.07 -Nodes (32): Anichron.Worker.Tests.Unit.Startup, Anichron.Worker.Tests.Unit.Ingestion.Middlewares, Anichron.Worker.Tests.Unit.Crawling, Anichron.Worker.Startup, Anichron.Worker.Tests.Unit.Ingestion.Pipeline, Anichron.Worker.Tests.Unit.Maintenance, Anichron.Infrastructure.Configuration, Anichron.Worker.Maintenance (+24 more) +Cohesion: 0.09 +Nodes (20): Anichron.Worker.Tests.Unit.Ingestion.Middlewares, Anichron.Worker.Tests.Unit.Ingestion.Pipeline, Anichron.Worker.Ingestion.Pipeline, Anichron.Infrastructure.Tests.Unit.Configuration, Anichron.Worker.Ingestion.Middlewares, Anichron.Worker.Ingestion, Anichron.Worker.Tests.Unit.TestDoubles, Anichron.Core (+12 more) ### Community 122 - "Microsoft.Testing.Extensions.Telemetry" Cohesion: 0.12 @@ -982,7 +978,7 @@ Cohesion: 0.15 Nodes (13): AppDefaults, Argon2, Email, Jwt, Lockout, Password, Pwned, RateLimit (+5 more) ### Community 138 - "TokenCleanupService" -Cohesion: 0.19 +Cohesion: 0.17 Nodes (11): BackgroundService, Log, TokenCleanupService, CancellationToken, Exception, IClock, ILogger, IOptions (+3 more) ### Community 139 - "Npgsql.EntityFrameworkCore.PostgreSQL" @@ -997,9 +993,9 @@ Nodes (13): Metadata, Asset, AssetId, CameraMake, CameraModel, DurationInSeconds Cohesion: 0.08 Nodes (27): dependencies, type, Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.Relational, NodaTime, Npgsql, Npgsql.EntityFrameworkCore.PostgreSQL, Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime (+19 more) -### Community 142 - "Microsoft.Extensions.Caching.Memory" -Cohesion: 0.12 -Nodes (14): contentHash, resolved, type, contentHash, dependencies, resolved, type, contentHash (+6 more) +### Community 142 - "Microsoft.Extensions.DependencyInjection" +Cohesion: 0.18 +Nodes (10): contentHash, dependencies, resolved, type, contentHash, dependencies, resolved, type (+2 more) ### Community 143 - "derive-db-docs.test.sh" Cohesion: 0.73 @@ -1029,9 +1025,9 @@ Nodes (12): Microsoft.Win32.Registry, xunit.v3.common, xunit.v3.extensibility.co Cohesion: 0.17 Nodes (12): Microsoft.Win32.Registry, xunit.v3.common, xunit.v3.extensibility.core, xunit.v3.runner.common, contentHash, dependencies, resolved, type (+4 more) -### Community 154 - "ExifExtractionMiddleware.cs" -Cohesion: 0.40 -Nodes (4): metadataextractor, metadataextractor_formats_exif, metadataextractor_formats_quicktime, nodatime_text +### Community 154 - "EfRefreshTokenRepository" +Cohesion: 0.31 +Nodes (7): EfRefreshTokenRepository, AnichronDbContext, RefreshTokenRepositoryTests, Fact, Guid, Instant, Task ### Community 155 - "Polly.Extensions" Cohesion: 0.18 @@ -1046,8 +1042,8 @@ Cohesion: 0.18 Nodes (11): Microsoft.IdentityModel.Tokens, contentHash, dependencies, resolved, type, contentHash, dependencies, resolved (+3 more) ### Community 158 - "ProxyFile" -Cohesion: 0.18 -Nodes (10): ProxyFile, Asset, AssetId, CreatedAt, Id, ProxyPath, ProxyType, SizeBytes (+2 more) +Cohesion: 0.09 +Nodes (19): Consequences, Schema documentation is generated, and its rationale lives in the schema, What went wrong, which is the only reason to take this decision, Why not simply generate a nicer document, ProxyFile, Asset, AssetId, CreatedAt (+11 more) ### Community 159 - "Microsoft.Extensions.Caching.Abstractions" Cohesion: 0.18 @@ -1061,9 +1057,9 @@ Nodes (11): Testably.Abstractions.FileSystem.Interface, TestableIO.System.IO.Abs Cohesion: 0.24 Nodes (10): Flashback Interaction Rules, AssetInteraction Entity, Burst Entity, Burst Detection, MediaAsset Entity, Metadata Entity, Soft-Delete Global Query Filter, User Entity (+2 more) -### Community 162 - "Microsoft.CodeAnalysis.Analyzers" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.CodeAnalysis.Analyzers +### Community 162 - "TestFixture" +Cohesion: 0.27 +Nodes (11): TestFixture, ConfigRepository, Pipeline, WorkerState, WorkerTests, CancellationToken, Fact, Guid (+3 more) ### Community 163 - "Anichron.Worker" Cohesion: 0.20 @@ -1141,17 +1137,17 @@ Nodes (8): contentHash, dependencies, requested, resolved, type, Blurhash.Core, Cohesion: 0.25 Nodes (8): TestableIO.System.IO.Abstractions, TestableIO.System.IO.Abstractions.Wrappers, System.IO.Abstractions, contentHash, dependencies, requested, resolved, type -### Community 182 - "ImageProcessor.cs" -Cohesion: 0.22 -Nodes (6): blurhash_imagesharp, Anichron.Worker.Tests.Unit.Ingestion.Proxy, sixlabors_imagesharp, sixlabors_imagesharp_formats_jpeg, sixlabors_imagesharp_pixelformats, sixlabors_imagesharp_processing +### Community 182 - "microsoft_extensions_options" +Cohesion: 0.08 +Nodes (24): blurhash_imagesharp, Anichron.Worker.Tests.Unit.Startup, Anichron.Worker.Tests.Unit.Crawling, Anichron.Worker.Startup, Anichron.Worker.Tests.Unit.Maintenance, Anichron.Worker.Maintenance, Anichron.Worker.Settings, Anichron.Worker.Tests.Unit.Infrastructure (+16 more) ### Community 183 - "Microsoft.NET.Test.Sdk" Cohesion: 0.25 Nodes (8): Microsoft.CodeCoverage, Microsoft.TestPlatform.TestHost, contentHash, dependencies, requested, resolved, type, Microsoft.NET.Test.Sdk -### Community 184 - "IMediaAssetRepository" -Cohesion: 0.31 -Nodes (6): EfMediaAssetRepository, IMediaAssetRepository, AnichronDbContext, CancellationToken, Guid, Task +### Community 184 - "JwtSettings" +Cohesion: 0.14 +Nodes (12): JwtSecurityTokenHandler, SigningCredentials, IJwtFactory, JwtFactory, IClock, IGuidFactory, JwtSettings, AccessTokenMinutes (+4 more) ### Community 185 - "xunit.v3.mtp-v1" Cohesion: 0.25 @@ -1197,9 +1193,9 @@ Nodes (7): Microsoft.IdentityModel.Protocols, System.IdentityModel.Tokens.Jwt, c Cohesion: 0.29 Nodes (7): Microsoft.TestPlatform.ObjectModel, Newtonsoft.Json, contentHash, dependencies, resolved, type, Microsoft.TestPlatform.TestHost -### Community 196 - "Microsoft.Extensions.DependencyInjection.AutoActivation" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.DependencyInjection.AutoActivation +### Community 196 - "ServiceCollectionExtensions.cs" +Cohesion: 0.11 +Nodes (15): Anichron.API.Tests.Unit.Security, Anichron.Infrastructure.Tests.Unit.Infrastructure, Anichron.Infrastructure.Configuration, konscious_security_cryptography, microsoft_aspnetcore_authentication_jwtbearer, microsoft_aspnetcore_httpoverrides, microsoft_extensions_configuration, microsoft_identitymodel_tokens (+7 more) ### Community 197 - "System.IO.Abstractions.TestingHelpers" Cohesion: 0.29 @@ -1309,9 +1305,9 @@ Nodes (6): Microsoft.IdentityModel.Abstractions, contentHash, dependencies, reso Cohesion: 0.29 Nodes (7): Microsoft.Bcl.Cryptography, Microsoft.IdentityModel.Logging, contentHash, dependencies, resolved, type, Microsoft.IdentityModel.Tokens -### Community 224 - "Schema documentation is generated, and its rationale lives in the schema" -Cohesion: 0.17 -Nodes (10): Consequences, Schema documentation is generated, and its rationale lives in the schema, What went wrong, which is the only reason to take this decision, Why not simply generate a nicer document, Why the rationale goes in `COMMENT`, not in Markdown, ProxyType, BlurHash, FullPreview (+2 more) +### Community 224 - "LockoutService" +Cohesion: 0.22 +Nodes (7): ILockoutService, LockoutService, CancellationToken, Instant, Task, InlineData, Theory ### Community 225 - "Mono.TextTemplating" Cohesion: 0.33 @@ -1337,9 +1333,9 @@ Nodes (6): Microsoft.Bcl.AsyncInterfaces, xunit.v3.common, contentHash, dependen Cohesion: 0.33 Nodes (6): contentHash, dependencies, resolved, type, NETStandard.Library, Blurhash.Core -### Community 231 - ".RunAsync" -Cohesion: 0.42 -Nodes (6): IProcessLauncher, ProcessResult, SystemProcessLauncher, CancellationToken, IReadOnlyList, Task +### Community 231 - "RefreshToken" +Cohesion: 0.15 +Nodes (15): IRefreshTokenRepository, CancellationToken, Guid, Instant, Task, RefreshToken, CreatedAt, ExpiresAt (+7 more) ### Community 232 - "Mono.TextTemplating" Cohesion: 0.33 @@ -1373,13 +1369,13 @@ Nodes (5): CI Build & Test Job, Coverage Badge (badges branch), Code Coverage Re Cohesion: 0.81 Nodes (6): assert_contains(), assert_eq(), assert_fails(), fail(), pass(), mutation-report.test.sh script -### Community 240 - "AuthCookieSettings" -Cohesion: 0.40 -Nodes (4): SameSiteMode, AuthCookieSettings, RefreshTokenDays, SameSite +### Community 240 - ".DeleteAsync" +Cohesion: 0.33 +Nodes (6): AdminUserService, CancellationToken, Guid, IClock, List, Task -### Community 241 - "Polly.Core" -Cohesion: 0.50 -Nodes (4): Polly.Core, contentHash, resolved, type +### Community 241 - "MediaType" +Cohesion: 0.38 +Nodes (6): MediaType, MediaTypeDetector, Dictionary, MediaTypeDetectorTests, InlineData, Theory ### Community 242 - "Humanizer.Core" Cohesion: 0.50 @@ -1426,7 +1422,7 @@ Cohesion: 0.40 Nodes (5): Roslynator.Analyzers, contentHash, requested, resolved, type ### Community 254 - ".AddAsync" -Cohesion: 0.32 +Cohesion: 0.36 Nodes (6): AdminStorageConfigService, CancellationToken, Guid, IGuidFactory, List, Task ### Community 255 - "xunit.runner.visualstudio" @@ -1541,9 +1537,9 @@ Nodes (5): contentHash, requested, resolved, type, Microsoft.Extensions.Hosting Cohesion: 0.40 Nodes (5): contentHash, requested, resolved, type, Microsoft.VisualStudio.Threading.Analyzers -### Community 283 - "ExifData" -Cohesion: 0.67 -Nodes (3): ExifData, Empty, LocalDateTime +### Community 283 - "CapturingLogger" +Cohesion: 0.18 +Nodes (10): CapturingLogger, Entries, EventId, Exception, Func, IDisposable, IReadOnlyList, Level (+2 more) ### Community 284 - "SonarAnalyzer.CSharp" Cohesion: 0.40 @@ -1561,26 +1557,30 @@ Nodes (5): contentHash, requested, resolved, type, FluentAssertions Cohesion: 0.40 Nodes (5): contentHash, dependencies, resolved, type, Microsoft.Extensions.Caching.Abstractions -### Community 288 - "IngestionPipelineRunner" -Cohesion: 0.15 -Nodes (13): IIngestionPipelineRunner, IngestionPipelineRunner, Log, CancellationToken, Exception, IEnumerable, IFileSystem, ILogger (+5 more) +### Community 288 - "IIngestionMiddleware" +Cohesion: 0.08 +Nodes (25): IServiceProvider, IServiceScope, IIngestionMiddleware, Order, IngestionOrder, CancellationToken, IngestionDelegate, Task (+17 more) ### Community 289 - "Microsoft.Extensions.DependencyInjection" -Cohesion: 0.40 -Nodes (5): contentHash, dependencies, resolved, type, Microsoft.Extensions.DependencyInjection +Cohesion: 0.11 +Nodes (15): contentHash, dependencies, resolved, type, contentHash, dependencies, resolved, type (+7 more) ### Community 290 - "PersistenceMiddleware" Cohesion: 0.12 Nodes (14): SecondaryFileDescriptor, Log, PersistenceMiddleware, Order, CancellationToken, Guid, IClock, IFileSystem (+6 more) -### Community 291 - "Microsoft.VisualStudio.Threading.Analyzers" -Cohesion: 0.40 -Nodes (5): contentHash, requested, resolved, type, Microsoft.VisualStudio.Threading.Analyzers +### Community 291 - "LivePhotoLinker" +Cohesion: 0.31 +Nodes (7): IReadOnlySet, ILivePhotoLinker, LivePhotoLinker, LivePhotoLinkResult, IEnumerable, IFileSystem, IReadOnlyList ### Community 292 - "Roslynator.Analyzers" Cohesion: 0.40 Nodes (5): Roslynator.Analyzers, contentHash, requested, resolved, type +### Community 293 - "dependencies" +Cohesion: 0.17 +Nodes (12): Microsoft.Extensions.Diagnostics.Abstractions, Microsoft.Extensions.Options.ConfigurationExtensions, contentHash, dependencies, resolved, type, contentHash, dependencies (+4 more) + ### Community 294 - "Microsoft.EntityFrameworkCore" Cohesion: 0.33 Nodes (6): contentHash, dependencies, requested, resolved, type, Microsoft.EntityFrameworkCore @@ -1589,13 +1589,25 @@ Nodes (6): contentHash, dependencies, requested, resolved, type, Microsoft.Entit Cohesion: 0.50 Nodes (3): Consequences, Self-host mutation reports; do not use the Stryker Dashboard, Why, when the dashboard is the obvious path +### Community 296 - "IMediaAssetRepository" +Cohesion: 0.29 +Nodes (6): EfMediaAssetRepository, IMediaAssetRepository, AnichronDbContext, CancellationToken, Guid, Task + ### Community 297 - "System.IO.Hashing" Cohesion: 0.40 Nodes (5): System.IO.Hashing, contentHash, requested, resolved, type -### Community 299 - "CapturingLogger" -Cohesion: 0.16 -Nodes (11): CapturingLogger, Entries, EventId, Exception, Func, IDisposable, IReadOnlyList, Level (+3 more) +### Community 298 - ".ItemFailed" +Cohesion: 0.47 +Nodes (4): Log, Exception, ILogger, LoggerMessage + +### Community 299 - ".Log" +Cohesion: 0.33 +Nodes (4): EventId, Exception, Func, LogLevel + +### Community 300 - ".IsInProgress" +Cohesion: 0.40 +Nodes (3): IngestionShutdown, CancellationToken, Exception ### Community 301 - "coverlet.collector" Cohesion: 0.40 @@ -1605,17 +1617,17 @@ Nodes (5): contentHash, requested, resolved, type, coverlet.collector Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.IdentityModel.Abstractions -### Community 303 - "Roslynator.Analyzers" +### Community 303 - "AuthCookieSettings" Cohesion: 0.40 -Nodes (5): Roslynator.Analyzers, contentHash, requested, resolved, type +Nodes (4): SameSiteMode, AuthCookieSettings, RefreshTokenDays, SameSite ### Community 304 - "Newtonsoft.Json" Cohesion: 0.50 Nodes (4): Newtonsoft.Json, contentHash, resolved, type -### Community 305 - "Microsoft.Extensions.FileProviders.Abstractions" -Cohesion: 0.40 -Nodes (5): contentHash, dependencies, resolved, type, Microsoft.Extensions.FileProviders.Abstractions +### Community 305 - "Microsoft.Extensions.Configuration.Abstractions" +Cohesion: 0.05 +Nodes (52): Microsoft.Extensions.Configuration, Microsoft.Extensions.Configuration.Abstractions, Microsoft.Extensions.Configuration.FileExtensions, Microsoft.Extensions.Configuration.Json, Microsoft.Extensions.Diagnostics.Abstractions, Microsoft.Extensions.FileProviders.Abstractions, Microsoft.Extensions.FileProviders.Physical, Microsoft.Extensions.FileSystemGlobbing (+44 more) ### Community 306 - "Anichron.Core.Tests.Unit" Cohesion: 0.50 @@ -1661,13 +1673,25 @@ Nodes (4): contentHash, resolved, type, Microsoft.EntityFrameworkCore.Abstractio Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Win32.Registry +### Community 317 - "Microsoft.CodeAnalysis.Analyzers" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.CodeAnalysis.Analyzers + ### Community 318 - "Microsoft.Extensions.Diagnostics.ExceptionSummarization" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Diagnostics.ExceptionSummarization -### Community 319 - ".BuildWithMiddlewares" -Cohesion: 0.17 -Nodes (11): IServiceProvider, IServiceScope, IProxyDirectoryStrategy, TwoLevelHexShardStrategy, Guid, Guid, IEnumerable, ILogger (+3 more) +### Community 319 - "ImageProxyMiddleware" +Cohesion: 0.10 +Nodes (19): ImageProxyMiddleware, Order, Log, CancellationToken, IEnumerable, IFileSystem, ILogger, IngestionDelegate (+11 more) + +### Community 320 - "Microsoft.Extensions.DependencyInjection.AutoActivation" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.Extensions.DependencyInjection.AutoActivation + +### Community 321 - "Polly.Core" +Cohesion: 0.50 +Nodes (4): Polly.Core, contentHash, resolved, type ### Community 322 - "assemble-pages.test.sh" Cohesion: 0.64 @@ -1681,29 +1705,33 @@ Nodes (4): contentHash, resolved, type, Microsoft.VisualStudio.SolutionPersisten Cohesion: 0.33 Nodes (6): Microsoft.Extensions.Hosting.Abstractions, contentHash, dependencies, resolved, type, Microsoft.Extensions.DependencyInjection.AutoActivation +### Community 325 - "Microsoft.EntityFrameworkCore.Abstractions" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.EntityFrameworkCore.Abstractions + ### Community 326 - "Microsoft.EntityFrameworkCore.Abstractions" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.EntityFrameworkCore.Abstractions -### Community 327 - ".ExecuteInTransactionAsync" +### Community 327 - "Microsoft.Extensions.DependencyInjection.Abstractions" Cohesion: 0.50 -Nodes (3): CancellationToken, Func, Task +Nodes (4): contentHash, resolved, type, Microsoft.Extensions.DependencyInjection.Abstractions -### Community 328 - "MediaTypeDetectorTests.cs" -Cohesion: 0.33 -Nodes (3): Anichron.Worker.Tests.Unit.Ingestion, ExifDataTests, Fact +### Community 328 - "Microsoft.Extensions.Logging" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Logging -### Community 329 - "Microsoft.Extensions.Logging.Console" +### Community 329 - "Microsoft.Extensions.Logging.EventLog" Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Logging.Console +Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Logging.EventLog ### Community 330 - "Microsoft.Extensions.FileSystemGlobbing" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Extensions.FileSystemGlobbing -### Community 331 - "Castle.Core" -Cohesion: 0.33 -Nodes (6): contentHash, dependencies, resolved, type, System.Diagnostics.EventLog, Castle.Core +### Community 331 - "Microsoft.EntityFrameworkCore.Analyzers" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.EntityFrameworkCore.Analyzers ### Community 332 - "Microsoft.VisualStudio.SolutionPersistence" Cohesion: 0.50 @@ -1713,17 +1741,17 @@ Nodes (4): contentHash, resolved, type, Microsoft.VisualStudio.SolutionPersisten Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Extensions.ObjectPool -### Community 334 - "Microsoft.Extensions.Logging.Abstractions" -Cohesion: 0.40 -Nodes (5): contentHash, dependencies, resolved, type, Microsoft.Extensions.Logging.Abstractions +### Community 334 - "Microsoft.Extensions.FileSystemGlobbing" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.Extensions.FileSystemGlobbing ### Community 335 - "Microsoft.Extensions.Logging.EventLog" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Logging.EventLog -### Community 336 - "xunit.runner.visualstudio" -Cohesion: 0.40 -Nodes (5): xunit.runner.visualstudio, contentHash, requested, resolved, type +### Community 336 - "Microsoft.Extensions.Logging.Configuration" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Logging.Configuration ### Community 337 - "Microsoft.OpenApi" Cohesion: 0.50 @@ -1849,50 +1877,30 @@ Nodes (3): die(), assemble-pages.sh script, usage() Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Build.Framework -### Community 368 - "System.CodeDom" +### Community 368 - "Microsoft.NETCore.Platforms" Cohesion: 0.50 -Nodes (4): System.CodeDom, contentHash, resolved, type +Nodes (4): contentHash, resolved, type, Microsoft.NETCore.Platforms ### Community 369 - "Microsoft.Extensions.DependencyModel" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Extensions.DependencyModel -### Community 370 - "Microsoft.CodeCoverage" +### Community 370 - "Testably.Abstractions.FileSystem.Interface" Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.CodeCoverage +Nodes (4): Testably.Abstractions.FileSystem.Interface, contentHash, resolved, type ### Community 371 - "Microsoft.Bcl.AsyncInterfaces" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Bcl.AsyncInterfaces -### Community 372 - "Microsoft.Extensions.Caching.Memory" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Caching.Memory - -### Community 373 - "Humanizer.Core" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Humanizer.Core - -### Community 374 - "Microsoft.Extensions.Configuration.CommandLine" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Configuration.CommandLine - -### Community 375 - "Microsoft.Extensions.Configuration.FileExtensions" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Configuration.FileExtensions +### Community 372 - "ExifData" +Cohesion: 0.67 +Nodes (3): ExifData, Empty, LocalDateTime ### Community 376 - "Microsoft.EntityFrameworkCore.Abstractions" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.EntityFrameworkCore.Abstractions -### Community 377 - "Microsoft.CodeAnalysis.Analyzers" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.CodeAnalysis.Analyzers - -### Community 378 - "Microsoft.Extensions.Diagnostics.Abstractions" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Diagnostics.Abstractions - ### Community 379 - "Microsoft.Extensions.Diagnostics" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Diagnostics @@ -1901,30 +1909,6 @@ Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Diagnostics Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Hosting.Abstractions -### Community 381 - "Microsoft.Extensions.Configuration.Binder" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Configuration.Binder - -### Community 382 - "Microsoft.Extensions.FileProviders.Physical" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.FileProviders.Physical - -### Community 383 - "Microsoft.Extensions.Logging.Console" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Logging.Console - -### Community 384 - "Microsoft.Extensions.Logging" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Logging - -### Community 385 - "Microsoft.Extensions.Logging.EventSource" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Logging.EventSource - -### Community 386 - "Microsoft.Extensions.Logging.EventLog" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Logging.EventLog - ### Community 387 - "Microsoft.NETCore.Platforms" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.NETCore.Platforms @@ -1933,26 +1917,10 @@ Nodes (4): contentHash, resolved, type, Microsoft.NETCore.Platforms Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Options.ConfigurationExtensions -### Community 389 - "Microsoft.Extensions.Options" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Options - ### Community 390 - "Microsoft.TestPlatform.ObjectModel" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.TestPlatform.ObjectModel -### Community 391 - "Microsoft.Extensions.Logging.Configuration" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Logging.Configuration - -### Community 392 - "System.Diagnostics.EventLog" -Cohesion: 0.50 -Nodes (4): System.Diagnostics.EventLog, contentHash, resolved, type - -### Community 393 - "Microsoft.Extensions.Options.ConfigurationExtensions" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Options.ConfigurationExtensions - ### Community 394 - "xunit.v3.assert" Cohesion: 0.50 Nodes (4): xunit.v3.assert, contentHash, resolved, type @@ -1961,49 +1929,33 @@ Nodes (4): xunit.v3.assert, contentHash, resolved, type Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Primitives -### Community 398 - "System.Composition.Runtime" -Cohesion: 0.50 -Nodes (4): System.Composition.Runtime, contentHash, resolved, type - ### Community 401 - "Newtonsoft.Json" Cohesion: 0.50 Nodes (4): Newtonsoft.Json, contentHash, resolved, type -### Community 403 - "Microsoft.Extensions.Configuration.Json" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Configuration.Json - -### Community 408 - "Microsoft.Win32.Registry" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Win32.Registry - ### Community 409 - "XmpCore" Cohesion: 0.50 Nodes (4): XmpCore, contentHash, resolved, type -### Community 410 - "xunit.analyzers" -Cohesion: 0.50 -Nodes (4): xunit.analyzers, contentHash, resolved, type - ## Knowledge Gaps -- **2489 isolated node(s):** `$schema`, `tasks`, `SLACK`, `TALLY`, `Microsoft.AspNetCore.Mvc.Testing` (+2484 more) - These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 2877 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) -- **14 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **2491 isolated node(s):** `$schema`, `tasks`, `SLACK`, `TALLY`, `Microsoft.AspNetCore.Mvc.Testing` (+2486 more) + These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 2881 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) +- **11 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `UserStorageConfig` connect `UserStorageConfig` to `AuthResponseMapperTests`, `AuthResult`, `IngestionPipelineRunnerTests`, `ExifExtractionMiddleware`, `TestFixture`, `User`, `TestFixture`, `WorkerInitializer`, `IAuthResponseMapper`, `EfUserRepository`, `SingleFileItem`, `FileIngestionPipeline`, `IngestionContext`, `TestFixture`, `LoggingMiddleware`, `.InvokeAsync_KnownHash_DoesNotCallNextAsync`, `TestFixture`, `.Build`, `MediaAsset`, `ContentHashingMiddleware`, `AnichronDbContext`, `User`, `.AddAsync`?** +- **Why does `UserStorageConfig` connect `UserStorageConfig` to `AuthResponseMapperTests`, `AuthResult`, `IngestionPipelineRunnerTests`, `ExifExtractionMiddleware`, `TestFixture`, `User`, `TestFixture`, `IAuthResponseMapper`, `EfUserRepository`, `SingleFileItem`, `FileIngestionPipeline`, `TestFixture`, `IngestionContext`, `EfUserStorageConfigRepository`, `TestFixture`, `TestFixture`, `WorkerInitializer`, `CapturingLogger`, `TestFixture`, `.InvokeAsync_KnownHash_DoesNotCallNextAsync`, `TestFixture`, `.Build`, `MediaAsset`, `ContentHashingMiddleware`, `Worker`, `AnichronDbContext`, `User`, `.AddAsync`?** _High betweenness centrality (0.024) - this node is a cross-community bridge._ -- **Why does `Anichron.Core.Domain` connect `Anichron.Core.Domain` to `Schema documentation is generated, and its rationale lives in the schema`, `Anichron.API.Settings`, `TestFixture`, `MediaTypeDetectorTests.cs`, `Metadata`, `Invite`, `MediaAsset`, `AssetInteraction`, `Burst`, `TestFixture`, `ImageProcessor.cs`, `Anichron.Worker.Ingestion.Pipeline`, `User`, `ProxyFile`, `UserStorageConfig`?** - _High betweenness centrality (0.020) - this node is a cross-community bridge._ -- **Why does `IngestionContext` connect `IngestionContext` to `IngestionPipelineRunnerTests`, `ExifExtractionMiddleware`, `TestFixture`, `TestFixture`, `SingleFileItem`, `FileIngestionPipeline`, `ProxyFile`, `UserStorageConfig`, `IngestionPipelineRunner`, `PersistenceMiddleware`, `IIngestionMiddleware`, `TestFixture`, `ImageProxyMiddleware`, `LoggingMiddleware`, `.InvokeAsync_KnownHash_DoesNotCallNextAsync`, `IdempotencyCheckMiddleware`, `TestFixture`, `.Build`, `MediaAsset`, `ContentHashingMiddleware`, `Anichron.Worker.Ingestion.Pipeline`?** - _High betweenness centrality (0.017) - this node is a cross-community bridge._ +- **Why does `IngestionContext` connect `IngestionContext` to `IngestionPipelineRunnerTests`, `ExifExtractionMiddleware`, `TestFixture`, `TestFixture`, `SingleFileItem`, `FileIngestionPipeline`, `ProxyFile`, `UserStorageConfig`, `IIngestionMiddleware`, `PersistenceMiddleware`, `CancellingMiddleware`, `TestFixture`, `ImageProxyMiddleware`, `CapturingLogger`, `.InvokeAsync_KnownHash_DoesNotCallNextAsync`, `IdempotencyCheckMiddleware`, `TestFixture`, `.Build`, `MediaAsset`, `ContentHashingMiddleware`, `Anichron.Worker.Ingestion.Pipeline`?** + _High betweenness centrality (0.021) - this node is a cross-community bridge._ +- **Why does `Anichron.Core.Domain` connect `Anichron.Core.Domain` to `Anichron.API.Settings`, `ServiceCollectionExtensions.cs`, `RefreshToken`, `IMediaAssetRepository`, `LivePhotoPairItem`, `Metadata`, `Invite`, `MediaAsset`, `AssetInteraction`, `Burst`, `TestFixture`, `microsoft_extensions_options`, `Anichron.Worker.Ingestion.Pipeline`, `User`, `ProxyFile`, `UserStorageConfig`?** + _High betweenness centrality (0.019) - this node is a cross-community bridge._ - **Are the 27 inferred relationships involving `UserStorageConfig` (e.g. with `.CreateStorageConfigAsync_CallsServiceWithUserIdAndRootPathAndReturnsMapperResult()` and `.GetAdminCreateStorageConfigResult_Success_Returns201WithLocationAndMappedBody()`) actually correct?** _`UserStorageConfig` has 27 INFERRED edges - model-reasoned connections that need verification._ - **Are the 3 inferred relationships involving `IngestionContext` (e.g. with `.ConsumeAsync()` and `.Asset_CanBeSetAndRead()`) actually correct?** _`IngestionContext` has 3 INFERRED edges - model-reasoned connections that need verification._ - **What connects `$schema`, `tasks`, `SLACK` to the rest of the system?** - _2489 weakly-connected nodes found - possible documentation gaps or missing edges._ + _2491 weakly-connected nodes found - possible documentation gaps or missing edges._ - **Should `TestFixture` be split into smaller, more focused modules?** - _Cohesion score 0.05511111111111111 - nodes in this community are weakly interconnected._ \ No newline at end of file + _Cohesion score 0.05536507936507937 - nodes in this community are weakly interconnected._ \ No newline at end of file diff --git a/graphify-out/graph.json b/graphify-out/graph.json index 9723e94..4cb265f 100644 --- a/graphify-out/graph.json +++ b/graphify-out/graph.json @@ -182,8 +182,8 @@ "source_location": "L135" }, { - "id": "src_anichron_api_settings_passwordpolicy_anichron_api_settings_passwordpolicy", - "label": "PasswordPolicy", + "id": "src_anichron_api_services_authservice_anichron_api_services_authtokens", + "label": "AuthTokens", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -191,14 +191,14 @@ "community_name": "AuthResponseMapperTests", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Settings", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s0" + "s253" ] }, - "norm_label": "passwordpolicy", - "source_file": "src/Anichron.API/Settings/PasswordPolicy.cs", - "source_location": "L3" + "norm_label": "authtokens", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L13" }, { "id": "src_anichron_api_tests_unit_endpoints_authresponsemappertests_anichron_api_tests_unit_endpoints_authresponsemappertests", @@ -345,7 +345,7 @@ "_callable_class": true, "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "metadata": { "is_partial": true, @@ -365,7 +365,7 @@ "_callable_class": true, "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "metadata": { "is_partial": true, @@ -379,84 +379,83 @@ "source_location": "L15" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegvideoprocessor", - "label": "FfmpegVideoProcessor", + "id": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice", + "label": "ITokenService", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 108, - "community_name": "FfmpegVideoProcessor", + "community_name": "TokenService", "file_type": "code", "metadata": { - "is_partial": true, - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s69" + "s222" ] }, - "norm_label": "ffmpegvideoprocessor", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "norm_label": "itokenservice", + "source_file": "src/Anichron.API/Services/TokenService.cs", "source_location": "L11" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_log", - "label": "Log", + "id": "src_anichron_api_services_tokenservice_anichron_api_services_tokenservice", + "label": "TokenService", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 108, - "community_name": "FfmpegVideoProcessor", + "community_name": "TokenService", "file_type": "code", "metadata": { - "is_nested_type": true, - "is_partial": true, - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s69" + "s222" ] }, - "norm_label": "log", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", - "source_location": "L104" + "norm_label": "tokenservice", + "source_file": "src/Anichron.API/Services/TokenService.cs", + "source_location": "L19" }, { - "id": "src_anichron_worker_settings_workerdefaults_anichron_worker_settings_migrator", - "label": "Migrator", + "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_log", + "label": "Log", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 109, - "community_name": "WorkerDefaults.cs", + "community_name": "Worker", "file_type": "code", "metadata": { "is_nested_type": true, - "namespace": "Anichron.Worker.Settings", + "is_partial": true, + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s0" + "s134" ] }, - "norm_label": "migrator", - "source_file": "src/Anichron.Worker/Settings/WorkerDefaults.cs", - "source_location": "L5" + "norm_label": "log", + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L50" }, { - "id": "src_anichron_worker_settings_workerdefaults_anichron_worker_settings_workerdefaults", - "label": "WorkerDefaults", + "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker", + "label": "Worker", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 109, - "community_name": "WorkerDefaults.cs", + "community_name": "Worker", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Settings", + "is_partial": true, + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s0" + "s134" ] }, - "norm_label": "workerdefaults", - "source_file": "src/Anichron.Worker/Settings/WorkerDefaults.cs", - "source_location": "L3" + "norm_label": "worker", + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L8" }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_persistencemiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_persistencemiddlewaretests", @@ -514,7 +513,7 @@ }, "norm_label": "argon2passwordhasher", "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L14" + "source_location": "L18" }, { "id": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests", @@ -528,12 +527,12 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Security", "scope_chain": [ - "s30" + "s56" ] }, "norm_label": "passwordhashertests", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L5" + "source_location": "L6" }, { "id": "src_anichron_core_data_anichrondbcontext_anichron_core_data_anichrondbcontext", @@ -637,7 +636,7 @@ "_callable_class": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -656,7 +655,7 @@ "_callable_class": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Security", @@ -675,7 +674,7 @@ "_callable_class": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -694,7 +693,7 @@ "_callable_class": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -713,7 +712,7 @@ "_callable_class": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -726,13 +725,13 @@ "source_location": "L10" }, { - "id": "src_anichron_api_services_authservice_anichron_api_services_authservice", - "label": "AuthService", + "id": "src_anichron_api_services_authservice_anichron_api_services_admincreateduser", + "label": "AdminCreatedUser", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -740,66 +739,28 @@ "s253" ] }, - "norm_label": "authservice", + "norm_label": "admincreateduser", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L53" - }, - { - "id": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice", - "label": "ITokenService", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s222" - ] - }, - "norm_label": "itokenservice", - "source_file": "src/Anichron.API/Services/TokenService.cs", - "source_location": "L11" + "source_location": "L14" }, { - "id": "src_anichron_api_services_tokenservice_anichron_api_services_tokenservice", - "label": "TokenService", + "id": "src_anichron_api_services_authservice_anichron_api_services_authservice", + "label": "AuthService", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", "scope_chain": [ - "s222" - ] - }, - "norm_label": "tokenservice", - "source_file": "src/Anichron.API/Services/TokenService.cs", - "source_location": "L19" - }, - { - "id": "src_anichron_core_data_iunitofwork_anichron_core_data_iunitofwork", - "label": "IUnitOfWork", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data", - "scope_chain": [ - "s0" + "s253" ] }, - "norm_label": "iunitofwork", - "source_file": "src/Anichron.Core/Data/IUnitOfWork.cs", - "source_location": "L3" + "norm_label": "authservice", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L53" }, { "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_testfixture", @@ -840,44 +801,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", "source_location": "L11" }, - { - "id": "src_anichron_api_infrastructure_webapplicationbuilderextensions_anichron_api_infrastructure_webapplicationbuilderextensions", - "label": "WebApplicationBuilderExtensions", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Infrastructure", - "scope_chain": [ - "s112" - ] - }, - "norm_label": "webapplicationbuilderextensions", - "source_file": "src/Anichron.API/Infrastructure/WebApplicationBuilderExtensions.cs", - "source_location": "L7" - }, - { - "id": "src_anichron_worker_infrastructure_hostapplicationbuilderextensions_anichron_worker_infrastructure_hostapplicationbuilderextensions", - "label": "HostApplicationBuilderExtensions", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Infrastructure", - "scope_chain": [ - "s76" - ] - }, - "norm_label": "hostapplicationbuilderextensions", - "source_file": "src/Anichron.Worker/Infrastructure/HostApplicationBuilderExtensions.cs", - "source_location": "L6" - }, { "id": "src_anichron_worker_ingestion_mediafileextensions_anichron_worker_ingestion_mediafileextensions", "label": "MediaFileExtensions", @@ -898,8 +821,8 @@ "source_location": "L3" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_h264encoder", - "label": "H264Encoder", + "id": "src_anichron_worker_tests_unit_ingestion_exifdatatests_anichron_worker_tests_unit_ingestion_exifdatatests", + "label": "ExifDataTests", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -907,14 +830,14 @@ "community_name": "Anichron.Worker.Ingestion.Pipeline", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion", "scope_chain": [ - "s69" + "s34" ] }, - "norm_label": "h264encoder", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", - "source_location": "L114" + "norm_label": "exifdatatests", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/ExifDataTests.cs", + "source_location": "L5" }, { "id": "src_anichron_core_domain_user_anichron_core_domain_user", @@ -1483,6 +1406,44 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ImageProxyGeneratorsTests.cs", "source_location": "L8" }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository", + "label": "EfRefreshTokenRepository", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": "efrefreshtokenrepository", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L15" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests", + "label": "RefreshTokenRepositoryTests", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ] + }, + "norm_label": "refreshtokenrepositorytests", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L9" + }, { "id": "src_anichron_core_domain_proxyfile_anichron_core_domain_proxyfile", "label": "ProxyFile", @@ -1503,22 +1464,22 @@ "source_location": "L3" }, { - "id": "src_anichron_worker_crawling_workerstate_anichron_worker_crawling_workerstate", - "label": "WorkerState", + "id": "src_anichron_core_domain_proxytype_anichron_core_domain_proxytype", + "label": "ProxyType", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", + "community": 158, + "community_name": "ProxyFile", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Crawling", + "namespace": "Anichron.Core.Domain", "scope_chain": [ "s0" ] }, - "norm_label": "workerstate", - "source_file": "src/Anichron.Worker/Crawling/WorkerState.cs", + "norm_label": "proxytype", + "source_file": "src/Anichron.Core/Domain/ProxyType.cs", "source_location": "L3" }, { @@ -1528,7 +1489,7 @@ "_callable_class": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "is_partial": true, @@ -1548,7 +1509,7 @@ "_callable_class": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "is_nested_type": true, @@ -1562,85 +1523,6 @@ "source_file": "src/Anichron.Worker/Startup/DatabaseMigratorService.cs", "source_location": "L40" }, - { - "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_efdatabasemigrator", - "label": "EfDatabaseMigrator", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s63" - ] - }, - "norm_label": "efdatabasemigrator", - "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", - "source_location": "L11" - }, - { - "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_idatabasemigrator", - "label": "IDatabaseMigrator", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s63" - ] - }, - "norm_label": "idatabasemigrator", - "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", - "source_location": "L6" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log", - "label": "Log", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "metadata": { - "is_nested_type": true, - "is_partial": true, - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s192" - ] - }, - "norm_label": "log", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L65" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_workerinitializer", - "label": "WorkerInitializer", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "metadata": { - "is_partial": true, - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s192" - ] - }, - "norm_label": "workerinitializer", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L10" - }, { "id": "src_anichron_worker_tests_unit_startup_databasemigratorservicetests_anichron_worker_tests_unit_startup_databasemigratorservicetests", "label": "DatabaseMigratorServiceTests", @@ -1648,7 +1530,7 @@ "_callable_class": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -1667,7 +1549,7 @@ "_callable_class": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "is_nested_type": true, @@ -1681,61 +1563,43 @@ "source_location": "L9" }, { - "id": "src_anichron_api_security_jwtfactory_anichron_api_security_ijwtfactory", - "label": "IJwtFactory", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Security", - "scope_chain": [ - "s220" - ] - }, - "norm_label": "ijwtfactory", - "source_file": "src/Anichron.API/Security/JwtFactory.cs", - "source_location": "L11" - }, - { - "id": "src_anichron_api_security_jwtfactory_anichron_api_security_jwtfactory", - "label": "JwtFactory", + "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_testfixture", + "label": "TestFixture", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", + "community": 162, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Security", + "is_nested_type": true, + "namespace": "Anichron.Worker.Tests.Unit.Crawling", "scope_chain": [ - "s220" + "s306" ] }, - "norm_label": "jwtfactory", - "source_file": "src/Anichron.API/Security/JwtFactory.cs", - "source_location": "L16" + "norm_label": "testfixture", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", + "source_location": "L14" }, { - "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings", - "label": "JwtSettings", + "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_workertests", + "label": "WorkerTests", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", + "community": 162, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Settings", + "namespace": "Anichron.Worker.Tests.Unit.Crawling", "scope_chain": [ - "s0" + "s306" ] }, - "norm_label": "jwtsettings", - "source_file": "src/Anichron.API/Settings/JwtSettings.cs", - "source_location": "L3" + "norm_label": "workertests", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", + "source_location": "L12" }, { "id": "src_anichron_api_tests_unit_security_jwtfactorytests_anichron_api_tests_unit_security_jwtfactorytests", @@ -1777,42 +1641,138 @@ "source_location": "L19" }, { - "id": "src_anichron_core_data_repository_mediaassetrepository_anichron_core_data_repository_efmediaassetrepository", - "label": "EfMediaAssetRepository", + "id": "src_anichron_worker_infrastructure_hostapplicationbuilderextensions_anichron_worker_infrastructure_hostapplicationbuilderextensions", + "label": "HostApplicationBuilderExtensions", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Infrastructure", + "scope_chain": [ + "s76" + ] + }, + "norm_label": "hostapplicationbuilderextensions", + "source_file": "src/Anichron.Worker/Infrastructure/HostApplicationBuilderExtensions.cs", + "source_location": "L6" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_h264encoder", + "label": "H264Encoder", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s69" + ] + }, + "norm_label": "h264encoder", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L114" + }, + { + "id": "src_anichron_worker_settings_workerdefaults_anichron_worker_settings_migrator", + "label": "Migrator", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "is_nested_type": true, + "namespace": "Anichron.Worker.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "migrator", + "source_file": "src/Anichron.Worker/Settings/WorkerDefaults.cs", + "source_location": "L5" + }, + { + "id": "src_anichron_worker_settings_workerdefaults_anichron_worker_settings_workerdefaults", + "label": "WorkerDefaults", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "workerdefaults", + "source_file": "src/Anichron.Worker/Settings/WorkerDefaults.cs", + "source_location": "L3" + }, + { + "id": "src_anichron_api_security_jwtfactory_anichron_api_security_ijwtfactory", + "label": "IJwtFactory", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 184, - "community_name": "IMediaAssetRepository", + "community_name": "JwtSettings", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Security", "scope_chain": [ - "s66" + "s220" ] }, - "norm_label": "efmediaassetrepository", - "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", - "source_location": "L12" + "norm_label": "ijwtfactory", + "source_file": "src/Anichron.API/Security/JwtFactory.cs", + "source_location": "L11" }, { - "id": "src_anichron_core_data_repository_mediaassetrepository_anichron_core_data_repository_imediaassetrepository", - "label": "IMediaAssetRepository", + "id": "src_anichron_api_security_jwtfactory_anichron_api_security_jwtfactory", + "label": "JwtFactory", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 184, - "community_name": "IMediaAssetRepository", + "community_name": "JwtSettings", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Security", "scope_chain": [ - "s66" + "s220" ] }, - "norm_label": "imediaassetrepository", - "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", - "source_location": "L6" + "norm_label": "jwtfactory", + "source_file": "src/Anichron.API/Security/JwtFactory.cs", + "source_location": "L16" + }, + { + "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings", + "label": "JwtSettings", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 184, + "community_name": "JwtSettings", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "jwtsettings", + "source_file": "src/Anichron.API/Settings/JwtSettings.cs", + "source_location": "L3" }, { "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_admincreateduserresponse", @@ -1966,25 +1926,6 @@ "source_file": "src/Anichron.API/Services/AdminUserService.cs", "source_location": "L7" }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_admincreateduser", - "label": "AdminCreatedUser", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 19, - "community_name": "IAuthResponseMapper", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ] - }, - "norm_label": "admincreateduser", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L14" - }, { "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_anichron_api_tests_unit_endpoints_adminendpointstests", "label": "AdminEndpointsTests", @@ -2042,6 +1983,44 @@ "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminUserEndpointsTests.cs", "source_location": "L9" }, + { + "id": "src_anichron_api_infrastructure_servicecollectionextensions_anichron_api_infrastructure_servicecollectionextensions", + "label": "ServiceCollectionExtensions", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Infrastructure", + "scope_chain": [ + "s529" + ] + }, + "norm_label": "servicecollectionextensions", + "source_file": "src/Anichron.API/Infrastructure/ServiceCollectionExtensions.cs", + "source_location": "L19" + }, + { + "id": "src_anichron_api_infrastructure_webapplicationbuilderextensions_anichron_api_infrastructure_webapplicationbuilderextensions", + "label": "WebApplicationBuilderExtensions", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Infrastructure", + "scope_chain": [ + "s112" + ] + }, + "norm_label": "webapplicationbuilderextensions", + "source_file": "src/Anichron.API/Infrastructure/WebApplicationBuilderExtensions.cs", + "source_location": "L7" + }, { "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_authresponsemapper", "label": "AuthResponseMapper", @@ -2080,26 +2059,6 @@ "source_file": "src/Anichron.API/Services/AuthService.cs", "source_location": "L16" }, - { - "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy", - "label": "UsernamePolicy", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 2, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "is_partial": true, - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s39" - ] - }, - "norm_label": "usernamepolicy", - "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", - "source_location": "L5" - }, { "id": "src_anichron_infrastructure_configuration_appiniinitializer_anichron_infrastructure_configuration_appiniinitializer", "label": "AppIniInitializer", @@ -2183,7 +2142,7 @@ "_callable_class": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -2202,7 +2161,7 @@ "_callable_class": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -2221,7 +2180,7 @@ "_callable_class": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -2240,7 +2199,7 @@ "_callable_class": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -2253,13 +2212,13 @@ "source_location": "L92" }, { - "id": "src_anichron_api_services_authservice_anichron_api_services_authtokens", - "label": "AuthTokens", + "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice", + "label": "IAuthService", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -2267,28 +2226,29 @@ "s253" ] }, - "norm_label": "authtokens", + "norm_label": "iauthservice", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L13" + "source_location": "L43" }, { - "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice", - "label": "IAuthService", + "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy", + "label": "UsernamePolicy", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "is_partial": true, + "namespace": "Anichron.API.Settings", "scope_chain": [ - "s253" + "s39" ] }, - "norm_label": "iauthservice", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L43" + "norm_label": "usernamepolicy", + "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", + "source_location": "L5" }, { "id": "src_anichron_api_tests_unit_endpoints_authendpointstests_anichron_api_tests_unit_endpoints_authendpointstests", @@ -2297,7 +2257,7 @@ "_callable_class": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -2329,23 +2289,42 @@ "source_location": "L5" }, { - "id": "src_anichron_core_domain_proxytype_anichron_core_domain_proxytype", - "label": "ProxyType", + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice", + "label": "ILockoutService", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 224, - "community_name": "Schema documentation is generated, and its rationale lives in the schema", + "community_name": "LockoutService", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Domain", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s0" + "s84" ] }, - "norm_label": "proxytype", - "source_file": "src/Anichron.Core/Domain/ProxyType.cs", - "source_location": "L3" + "norm_label": "ilockoutservice", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L7" + }, + { + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice", + "label": "LockoutService", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 224, + "community_name": "LockoutService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s84" + ] + }, + "norm_label": "lockoutservice", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L15" }, { "id": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_efuserrepository", @@ -2386,61 +2365,42 @@ "source_location": "L8" }, { - "id": "src_anichron_worker_ingestion_proxy_processlauncher_anichron_worker_ingestion_proxy_iprocesslauncher", - "label": "IProcessLauncher", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 231, - "community_name": ".RunAsync", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s27" - ] - }, - "norm_label": "iprocesslauncher", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProcessLauncher.cs", - "source_location": "L5" - }, - { - "id": "src_anichron_worker_ingestion_proxy_processlauncher_anichron_worker_ingestion_proxy_processresult", - "label": "ProcessResult", + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository", + "label": "IRefreshTokenRepository", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 231, - "community_name": ".RunAsync", + "community_name": "RefreshToken", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.Core.Data.Repository", "scope_chain": [ - "s27" + "s66" ] }, - "norm_label": "processresult", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProcessLauncher.cs", - "source_location": "L10" + "norm_label": "irefreshtokenrepository", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L6" }, { - "id": "src_anichron_worker_ingestion_proxy_processlauncher_anichron_worker_ingestion_proxy_systemprocesslauncher", - "label": "SystemProcessLauncher", + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken", + "label": "RefreshToken", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 231, - "community_name": ".RunAsync", + "community_name": "RefreshToken", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.Core.Domain", "scope_chain": [ - "s27" + "s0" ] }, - "norm_label": "systemprocesslauncher", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProcessLauncher.cs", - "source_location": "L12" + "norm_label": "refreshtoken", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L3" }, { "id": "src_anichron_api_infrastructure_mustchangepasswordmiddleware_anichron_api_infrastructure_mustchangepasswordmiddleware", @@ -2481,23 +2441,61 @@ "source_location": "L7" }, { - "id": "src_anichron_api_settings_authcookiesettings_anichron_api_settings_authcookiesettings", - "label": "AuthCookieSettings", + "id": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice", + "label": "AdminUserService", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 240, - "community_name": "AuthCookieSettings", + "community_name": ".DeleteAsync", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Settings", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s0" + "s92" ] }, - "norm_label": "authcookiesettings", - "source_file": "src/Anichron.API/Settings/AuthCookieSettings.cs", - "source_location": "L3" + "norm_label": "adminuserservice", + "source_file": "src/Anichron.API/Services/AdminUserService.cs", + "source_location": "L15" + }, + { + "id": "src_anichron_worker_ingestion_mediatypedetector_anichron_worker_ingestion_mediatypedetector", + "label": "MediaTypeDetector", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 241, + "community_name": "MediaType", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion", + "scope_chain": [ + "s29" + ] + }, + "norm_label": "mediatypedetector", + "source_file": "src/Anichron.Worker/Ingestion/MediaTypeDetector.cs", + "source_location": "L5" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests_anichron_worker_tests_unit_ingestion_mediatypedetectortests", + "label": "MediaTypeDetectorTests", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 241, + "community_name": "MediaType", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion", + "scope_chain": [ + "s62" + ] + }, + "norm_label": "mediatypedetectortests", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/MediaTypeDetectorTests.cs", + "source_location": "L6" }, { "id": "src_anichron_core_data_repository_inviterepository_anichron_core_data_repository_efinviterepository", @@ -2595,25 +2593,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/FileIngestionPipelineTests.cs", "source_location": "L24" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests", - "label": "IngestionContextTests", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 25, - "community_name": "SingleFileItem", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", - "scope_chain": [ - "s104" - ] - }, - "norm_label": "ingestioncontexttests", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionContextTests.cs", - "source_location": "L7" - }, { "id": "src_anichron_api_services_adminstorageconfigservice_anichron_api_services_adminstorageconfigservice", "label": "AdminStorageConfigService", @@ -2711,68 +2690,6 @@ "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", "source_location": "L12" }, - { - "id": "src_anichron_worker_crawling_fileingestionpipeline_anichron_worker_crawling_log", - "label": "Log", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "is_nested_type": true, - "is_partial": true, - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s256" - ] - }, - "norm_label": "log", - "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", - "source_location": "L124" - }, - { - "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_log", - "label": "Log", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "is_nested_type": true, - "is_partial": true, - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s134" - ] - }, - "norm_label": "log", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L50" - }, - { - "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker", - "label": "Worker", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "is_partial": true, - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s134" - ] - }, - "norm_label": "worker", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L8" - }, { "id": "src_anichron_worker_ingestion_ingestionitem_anichron_worker_ingestion_ingestionitem", "label": "IngestionItem", @@ -2793,156 +2710,62 @@ "source_location": "L10" }, { - "id": "src_anichron_worker_ingestion_ingestionitem_anichron_worker_ingestion_secondaryfiledescriptor", - "label": "SecondaryFileDescriptor", + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_capturinglogger", + "label": "CapturingLogger", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", + "community": 283, + "community_name": "CapturingLogger", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion", + "is_nested_type": true, + "namespace": "Anichron.Worker.Tests.Unit.Maintenance", "scope_chain": [ - "s29" + "s241" ] }, - "norm_label": "secondaryfiledescriptor", - "source_file": "src/Anichron.Worker/Ingestion/IngestionItem.cs", - "source_location": "L5" + "norm_label": "capturinglogger", + "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", + "source_location": "L88" }, { - "id": "src_anichron_worker_ingestion_ingestionshutdown_anichron_worker_ingestion_ingestionshutdown", - "label": "IngestionShutdown", + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware", + "label": "IIngestionMiddleware", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", + "community": 288, + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion", + "namespace": "Anichron.Worker.Ingestion.Pipeline", "scope_chain": [ "s0" ] }, - "norm_label": "ingestionshutdown", - "source_file": "src/Anichron.Worker/Ingestion/IngestionShutdown.cs", - "source_location": "L3" - }, - { - "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_ilivephotolinker", - "label": "ILivePhotoLinker", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion", - "scope_chain": [ - "s59" - ] - }, - "norm_label": "ilivephotolinker", - "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", - "source_location": "L10" - }, - { - "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_livephotolinker", - "label": "LivePhotoLinker", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion", - "scope_chain": [ - "s59" - ] - }, - "norm_label": "livephotolinker", - "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", - "source_location": "L15" - }, - { - "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_livephotolinkresult", - "label": "LivePhotoLinkResult", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion", - "scope_chain": [ - "s59" - ] - }, - "norm_label": "livephotolinkresult", - "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", - "source_location": "L6" - }, - { - "id": "src_anichron_worker_ingestion_mediatypedetector_anichron_worker_ingestion_mediatypedetector", - "label": "MediaTypeDetector", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion", - "scope_chain": [ - "s29" - ] - }, - "norm_label": "mediatypedetector", - "source_file": "src/Anichron.Worker/Ingestion/MediaTypeDetector.cs", + "norm_label": "iingestionmiddleware", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", "source_location": "L5" }, { - "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests_anichron_worker_tests_unit_ingestion_mediatypedetectortests", - "label": "MediaTypeDetectorTests", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion", - "scope_chain": [ - "s62" - ] - }, - "norm_label": "mediatypedetectortests", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/MediaTypeDetectorTests.cs", - "source_location": "L6" - }, - { - "id": "src_anichron_worker_ingestion_exifdata_anichron_worker_ingestion_exifdata", - "label": "ExifData", + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_ingestionorder", + "label": "IngestionOrder", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 283, - "community_name": "ExifData", + "community": 288, + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion", + "namespace": "Anichron.Worker.Ingestion.Pipeline", "scope_chain": [ - "s17" + "s0" ] }, - "norm_label": "exifdata", - "source_file": "src/Anichron.Worker/Ingestion/ExifData.cs", - "source_location": "L5" + "norm_label": "ingestionorder", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", + "source_location": "L12" }, { "id": "src_anichron_worker_ingestion_pipeline_ingestionpipelinerunner_anichron_worker_ingestion_pipeline_iingestionpipelinerunner", @@ -2951,7 +2774,7 @@ "_callable_class": true, "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -2970,7 +2793,7 @@ "_callable_class": true, "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { "is_partial": true, @@ -2990,7 +2813,7 @@ "_callable_class": true, "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { "is_nested_type": true, @@ -3085,24 +2908,120 @@ "source_location": "L11" }, { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_capturinglogger", - "label": "CapturingLogger", + "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_ilivephotolinker", + "label": "ILivePhotoLinker", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 299, - "community_name": "CapturingLogger", + "community": 291, + "community_name": "LivePhotoLinker", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion", + "scope_chain": [ + "s59" + ] + }, + "norm_label": "ilivephotolinker", + "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", + "source_location": "L10" + }, + { + "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_livephotolinker", + "label": "LivePhotoLinker", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 291, + "community_name": "LivePhotoLinker", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion", + "scope_chain": [ + "s59" + ] + }, + "norm_label": "livephotolinker", + "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", + "source_location": "L15" + }, + { + "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_livephotolinkresult", + "label": "LivePhotoLinkResult", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 291, + "community_name": "LivePhotoLinker", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion", + "scope_chain": [ + "s59" + ] + }, + "norm_label": "livephotolinkresult", + "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", + "source_location": "L6" + }, + { + "id": "src_anichron_core_data_repository_mediaassetrepository_anichron_core_data_repository_efmediaassetrepository", + "label": "EfMediaAssetRepository", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 296, + "community_name": "IMediaAssetRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": "efmediaassetrepository", + "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", + "source_location": "L12" + }, + { + "id": "src_anichron_core_data_repository_mediaassetrepository_anichron_core_data_repository_imediaassetrepository", + "label": "IMediaAssetRepository", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 296, + "community_name": "IMediaAssetRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": "imediaassetrepository", + "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", + "source_location": "L6" + }, + { + "id": "src_anichron_worker_crawling_fileingestionpipeline_anichron_worker_crawling_log", + "label": "Log", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 298, + "community_name": ".ItemFailed", "file_type": "code", "metadata": { "is_nested_type": true, - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", + "is_partial": true, + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s185" + "s256" ] }, - "norm_label": "capturinglogger", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/LoggingMiddlewareTests.cs", - "source_location": "L110" + "norm_label": "log", + "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", + "source_location": "L124" }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests", @@ -3164,8 +3083,8 @@ "source_location": "L298" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_testfixture", - "label": "TestFixture", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_stubmiddleware", + "label": "StubMiddleware", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -3179,13 +3098,13 @@ "s368" ] }, - "norm_label": "testfixture", + "norm_label": "stubmiddleware", "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L16" + "source_location": "L286" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_throwingmiddleware", - "label": "ThrowingMiddleware", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_testfixture", + "label": "TestFixture", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -3199,67 +3118,67 @@ "s368" ] }, - "norm_label": "throwingmiddleware", + "norm_label": "testfixture", "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L339" + "source_location": "L16" }, { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests", - "label": "AdminStorageConfigServiceTests", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_throwingmiddleware", + "label": "ThrowingMiddleware", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 3, + "community_name": "IngestionPipelineRunnerTests", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", + "is_nested_type": true, + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", "scope_chain": [ - "s121" + "s368" ] }, - "norm_label": "adminstorageconfigservicetests", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L8" + "norm_label": "throwingmiddleware", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", + "source_location": "L339" }, { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_testfixture", - "label": "TestFixture", + "id": "src_anichron_worker_ingestion_ingestionshutdown_anichron_worker_ingestion_ingestionshutdown", + "label": "IngestionShutdown", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 300, + "community_name": ".IsInProgress", "file_type": "code", "metadata": { - "is_nested_type": true, - "namespace": "Anichron.API.Tests.Unit.Services", + "namespace": "Anichron.Worker.Ingestion", "scope_chain": [ - "s121" + "s0" ] }, - "norm_label": "testfixture", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L10" + "norm_label": "ingestionshutdown", + "source_file": "src/Anichron.Worker/Ingestion/IngestionShutdown.cs", + "source_location": "L3" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository", - "label": "EfUserStorageConfigRepository", + "id": "src_anichron_api_settings_authcookiesettings_anichron_api_settings_authcookiesettings", + "label": "AuthCookieSettings", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 303, + "community_name": "AuthCookieSettings", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Settings", "scope_chain": [ - "s66" + "s0" ] }, - "norm_label": "efuserstorageconfigrepository", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L17" + "norm_label": "authcookiesettings", + "source_file": "src/Anichron.API/Settings/AuthCookieSettings.cs", + "source_location": "L3" }, { "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository", @@ -3300,122 +3219,66 @@ "source_location": "L3" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests", - "label": "UserStorageConfigRepositoryTests", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ] - }, - "norm_label": "userstorageconfigrepositorytests", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L8" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_testfixture", - "label": "TestFixture", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "is_nested_type": true, - "namespace": "Anichron.Worker.Tests.Unit.Crawling", - "scope_chain": [ - "s306" - ] - }, - "norm_label": "testfixture", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", - "source_location": "L14" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_workertests", - "label": "WorkerTests", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Crawling", - "scope_chain": [ - "s306" - ] - }, - "norm_label": "workertests", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", - "source_location": "L12" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture", - "label": "TestFixture", + "id": "src_anichron_worker_ingestion_middlewares_loggingmiddleware_anichron_worker_ingestion_middlewares_log", + "label": "Log", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 313, + "community_name": "Log", "file_type": "code", "metadata": { "is_nested_type": true, - "namespace": "Anichron.Worker.Tests.Unit.Startup", + "is_partial": true, + "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ - "s307" + "s43" ] }, - "norm_label": "testfixture", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L15" + "norm_label": "log", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/LoggingMiddleware.cs", + "source_location": "L17" }, { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests", - "label": "WorkerInitializerTests", + "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_anichron_worker_ingestion_middlewares_imageproxymiddleware", + "label": "ImageProxyMiddleware", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 319, + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Startup", + "is_partial": true, + "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ - "s307" + "s209" ] }, - "norm_label": "workerinitializertests", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L13" + "norm_label": "imageproxymiddleware", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ImageProxyMiddleware.cs", + "source_location": "L10" }, { - "id": "src_anichron_worker_ingestion_middlewares_loggingmiddleware_anichron_worker_ingestion_middlewares_log", + "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_anichron_worker_ingestion_middlewares_log", "label": "Log", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 313, - "community_name": "Log", + "community": 319, + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { "is_nested_type": true, "is_partial": true, "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ - "s43" + "s209" ] }, "norm_label": "log", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/LoggingMiddleware.cs", - "source_location": "L17" + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ImageProxyMiddleware.cs", + "source_location": "L54" }, { "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_anichron_worker_ingestion_proxy_iproxydirectorystrategy", @@ -3424,7 +3287,7 @@ "_callable_class": true, "_origin": "ast", "community": 319, - "community_name": ".BuildWithMiddlewares", + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Proxy", @@ -3443,7 +3306,7 @@ "_callable_class": true, "_origin": "ast", "community": 319, - "community_name": ".BuildWithMiddlewares", + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Proxy", @@ -3462,7 +3325,7 @@ "_callable_class": true, "_origin": "ast", "community": 319, - "community_name": ".BuildWithMiddlewares", + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -3486,12 +3349,12 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s121" + "s160" ] }, "norm_label": "adminuserservicetests", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L8" + "source_location": "L9" }, { "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_testfixture", @@ -3506,12 +3369,12 @@ "is_nested_type": true, "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s121" + "s160" ] }, "norm_label": "testfixture", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L12" + "source_location": "L13" }, { "id": "src_anichron_api_infrastructure_authmessages_anichron_api_infrastructure_authmessages", @@ -3519,8 +3382,8 @@ "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 321, - "community_name": "AuthMessages.cs", + "community": 33, + "community_name": "Anichron.API.Settings", "file_type": "code", "metadata": { "namespace": "Anichron.API.Infrastructure", @@ -3538,8 +3401,8 @@ "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 321, - "community_name": "AuthMessages.cs", + "community": 33, + "community_name": "Anichron.API.Settings", "file_type": "code", "metadata": { "namespace": "Anichron.API.Infrastructure", @@ -3552,27 +3415,27 @@ "source_location": "L25" }, { - "id": "src_anichron_worker_tests_unit_ingestion_exifdatatests_anichron_worker_tests_unit_ingestion_exifdatatests", - "label": "ExifDataTests", + "id": "src_anichron_api_infrastructure_authpolicies_anichron_api_infrastructure_authpolicies", + "label": "AuthPolicies", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 328, - "community_name": "MediaTypeDetectorTests.cs", + "community": 33, + "community_name": "Anichron.API.Settings", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion", + "namespace": "Anichron.API.Infrastructure", "scope_chain": [ - "s34" + "s0" ] }, - "norm_label": "exifdatatests", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/ExifDataTests.cs", - "source_location": "L5" + "norm_label": "authpolicies", + "source_file": "src/Anichron.API/Infrastructure/AuthPolicies.cs", + "source_location": "L3" }, { - "id": "src_anichron_api_infrastructure_authpolicies_anichron_api_infrastructure_authpolicies", - "label": "AuthPolicies", + "id": "src_anichron_api_settings_corssettings_anichron_api_settings_corssettings", + "label": "CorsSettings", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -3580,71 +3443,71 @@ "community_name": "Anichron.API.Settings", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Infrastructure", + "namespace": "Anichron.API.Settings", "scope_chain": [ "s0" ] }, - "norm_label": "authpolicies", - "source_file": "src/Anichron.API/Infrastructure/AuthPolicies.cs", + "norm_label": "corssettings", + "source_file": "src/Anichron.API/Settings/CorsSettings.cs", "source_location": "L3" }, { - "id": "src_anichron_api_infrastructure_healthcheckresponsewriter_anichron_api_infrastructure_healthcheckresponsewriter", - "label": "HealthCheckResponseWriter", + "id": "src_anichron_worker_ingestion_proxy_processlauncher_anichron_worker_ingestion_proxy_iprocesslauncher", + "label": "IProcessLauncher", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 33, - "community_name": "Anichron.API.Settings", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Infrastructure", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s54" + "s27" ] }, - "norm_label": "healthcheckresponsewriter", - "source_file": "src/Anichron.API/Infrastructure/HealthCheckResponseWriter.cs", + "norm_label": "iprocesslauncher", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProcessLauncher.cs", "source_location": "L5" }, { - "id": "src_anichron_api_infrastructure_servicecollectionextensions_anichron_api_infrastructure_servicecollectionextensions", - "label": "ServiceCollectionExtensions", + "id": "src_anichron_worker_ingestion_proxy_processlauncher_anichron_worker_ingestion_proxy_processresult", + "label": "ProcessResult", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 33, - "community_name": "Anichron.API.Settings", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Infrastructure", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s529" + "s27" ] }, - "norm_label": "servicecollectionextensions", - "source_file": "src/Anichron.API/Infrastructure/ServiceCollectionExtensions.cs", - "source_location": "L19" + "norm_label": "processresult", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProcessLauncher.cs", + "source_location": "L10" }, { - "id": "src_anichron_api_settings_corssettings_anichron_api_settings_corssettings", - "label": "CorsSettings", + "id": "src_anichron_worker_ingestion_proxy_processlauncher_anichron_worker_ingestion_proxy_systemprocesslauncher", + "label": "SystemProcessLauncher", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 33, - "community_name": "Anichron.API.Settings", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Settings", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s0" + "s27" ] }, - "norm_label": "corssettings", - "source_file": "src/Anichron.API/Settings/CorsSettings.cs", - "source_location": "L3" + "norm_label": "systemprocesslauncher", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProcessLauncher.cs", + "source_location": "L12" }, { "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegexception", @@ -3653,7 +3516,7 @@ "_callable_class": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Proxy", @@ -3666,110 +3529,150 @@ "source_location": "L122" }, { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests", - "label": "FfmpegVideoProcessorTests", + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegvideoprocessor", + "label": "FfmpegVideoProcessor", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "is_partial": true, + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s144" + "s69" ] }, - "norm_label": "ffmpegvideoprocessortests", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/FfmpegVideoProcessorTests.cs", - "source_location": "L8" + "norm_label": "ffmpegvideoprocessor", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L11" }, { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_anichron_worker_tests_unit_ingestion_proxy_testfixture", - "label": "TestFixture", + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ivideoprocessor", + "label": "IVideoProcessor", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "is_nested_type": true, - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s144" + "s69" ] }, - "norm_label": "testfixture", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/FfmpegVideoProcessorTests.cs", - "source_location": "L10" + "norm_label": "ivideoprocessor", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L6" }, { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware", - "label": "IIngestionMiddleware", + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_log", + "label": "Log", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 35, - "community_name": "IIngestionMiddleware", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Pipeline", + "is_nested_type": true, + "is_partial": true, + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s0" + "s69" ] }, - "norm_label": "iingestionmiddleware", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", - "source_location": "L5" + "norm_label": "log", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L104" }, { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_ingestionorder", - "label": "IngestionOrder", + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator", + "label": "Video720PGenerator", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 35, - "community_name": "IIngestionMiddleware", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Pipeline", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s0" + "s29" ] }, - "norm_label": "ingestionorder", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", + "norm_label": "video720pgenerator", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", "source_location": "L12" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_cancellingmiddleware", - "label": "CancellingMiddleware", + "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests", + "label": "FfmpegVideoProcessorTests", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 35, - "community_name": "IIngestionMiddleware", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s144" + ] + }, + "norm_label": "ffmpegvideoprocessortests", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/FfmpegVideoProcessorTests.cs", + "source_location": "L8" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_anichron_worker_tests_unit_ingestion_proxy_testfixture", + "label": "TestFixture", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "is_nested_type": true, - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", "scope_chain": [ - "s368" + "s144" ] }, - "norm_label": "cancellingmiddleware", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L351" + "norm_label": "testfixture", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/FfmpegVideoProcessorTests.cs", + "source_location": "L10" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_stubmiddleware", - "label": "StubMiddleware", + "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests", + "label": "VideoProxyGeneratorsTests", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s68" + ] + }, + "norm_label": "videoproxygeneratorstests", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", + "source_location": "L6" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_cancellingmiddleware", + "label": "CancellingMiddleware", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 35, - "community_name": "IIngestionMiddleware", + "community_name": "CancellingMiddleware", "file_type": "code", "metadata": { "is_nested_type": true, @@ -3778,9 +3681,9 @@ "s368" ] }, - "norm_label": "stubmiddleware", + "norm_label": "cancellingmiddleware", "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L286" + "source_location": "L351" }, { "id": "src_anichron_api_security_appclaimtypes_anichron_api_security_appclaimtypes", @@ -3880,23 +3783,80 @@ "source_location": "L312" }, { - "id": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice", - "label": "AdminUserService", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests", + "label": "IngestionContextTests", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 37, + "community_name": "IngestionContext", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", + "scope_chain": [ + "s104" + ] + }, + "norm_label": "ingestioncontexttests", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionContextTests.cs", + "source_location": "L7" + }, + { + "id": "src_anichron_worker_ingestion_exifdata_anichron_worker_ingestion_exifdata", + "label": "ExifData", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 372, + "community_name": "ExifData", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion", + "scope_chain": [ + "s17" + ] + }, + "norm_label": "exifdata", + "source_file": "src/Anichron.Worker/Ingestion/ExifData.cs", + "source_location": "L5" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository", + "label": "EfUserStorageConfigRepository", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 38, - "community_name": ".DeleteAsync", + "community_name": "EfUserStorageConfigRepository", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.Core.Data.Repository", "scope_chain": [ - "s92" + "s66" ] }, - "norm_label": "adminuserservice", - "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L15" + "norm_label": "efuserstorageconfigrepository", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L17" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests", + "label": "UserStorageConfigRepositoryTests", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 38, + "community_name": "EfUserStorageConfigRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s129" + ] + }, + "norm_label": "userstorageconfigrepositorytests", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L8" }, { "id": "src_anichron_worker_ingestion_ingestionitem_anichron_worker_ingestion_livephotopairitem", @@ -3917,6 +3877,25 @@ "source_file": "src/Anichron.Worker/Ingestion/IngestionItem.cs", "source_location": "L25" }, + { + "id": "src_anichron_worker_ingestion_ingestionitem_anichron_worker_ingestion_secondaryfiledescriptor", + "label": "SecondaryFileDescriptor", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 39, + "community_name": "LivePhotoPairItem", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion", + "scope_chain": [ + "s29" + ] + }, + "norm_label": "secondaryfiledescriptor", + "source_file": "src/Anichron.Worker/Ingestion/IngestionItem.cs", + "source_location": "L5" + }, { "id": "src_anichron_worker_tests_unit_ingestion_livephotolinkertests_anichron_worker_tests_unit_ingestion_livephotolinkertests", "label": "LivePhotoLinkerTests", @@ -3981,7 +3960,7 @@ "_callable_class": true, "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "is_partial": true, @@ -4001,7 +3980,7 @@ "_callable_class": true, "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -4020,7 +3999,7 @@ "_callable_class": true, "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "is_nested_type": true, @@ -4034,6 +4013,25 @@ "source_file": "src/Anichron.API/Services/BootstrapResetService.cs", "source_location": "L61" }, + { + "id": "src_anichron_core_data_iunitofwork_anichron_core_data_iunitofwork", + "label": "IUnitOfWork", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 45, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "iunitofwork", + "source_file": "src/Anichron.Core/Data/IUnitOfWork.cs", + "source_location": "L3" + }, { "id": "src_anichron_api_endpoints_userendpoints_anichron_api_endpoints_changepasswordrequest", "label": "ChangePasswordRequest", @@ -4041,7 +4039,7 @@ "_callable_class": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -4060,7 +4058,7 @@ "_callable_class": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -4079,7 +4077,7 @@ "_callable_class": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -4091,6 +4089,25 @@ "source_file": "src/Anichron.API/Endpoints/UserEndpoints.cs", "source_location": "L54" }, + { + "id": "src_anichron_api_settings_passwordpolicy_anichron_api_settings_passwordpolicy", + "label": "PasswordPolicy", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 47, + "community_name": "PasswordPolicy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "passwordpolicy", + "source_file": "src/Anichron.API/Settings/PasswordPolicy.cs", + "source_location": "L3" + }, { "id": "src_anichron_api_tests_unit_endpoints_userendpointstests_anichron_api_tests_unit_endpoints_userendpointstests", "label": "UserEndpointsTests", @@ -4098,7 +4115,7 @@ "_callable_class": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -4210,42 +4227,43 @@ "source_location": "L103" }, { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice", - "label": "ILockoutService", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests", + "label": "AdminStorageConfigServiceTests", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s84" + "s121" ] }, - "norm_label": "ilockoutservice", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L7" + "norm_label": "adminstorageconfigservicetests", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L8" }, { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice", - "label": "LockoutService", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_testfixture", + "label": "TestFixture", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "is_nested_type": true, + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s84" + "s121" ] }, - "norm_label": "lockoutservice", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L15" + "norm_label": "testfixture", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L10" }, { "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_log", @@ -4288,25 +4306,6 @@ "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", "source_location": "L7" }, - { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ivideoprocessor", - "label": "IVideoProcessor", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s69" - ] - }, - "norm_label": "ivideoprocessor", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", - "source_location": "L6" - }, { "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_ivideoproxygenerator", "label": "IVideoProxyGenerator", @@ -4326,25 +4325,6 @@ "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", "source_location": "L5" }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator", - "label": "Video720PGenerator", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s29" - ] - }, - "norm_label": "video720pgenerator", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L12" - }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_videoproxymiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_testfixture", "label": "TestFixture", @@ -4385,23 +4365,23 @@ "source_location": "L15" }, { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests", - "label": "VideoProxyGeneratorsTests", + "id": "src_anichron_api_infrastructure_healthcheckresponsewriter_anichron_api_infrastructure_healthcheckresponsewriter", + "label": "HealthCheckResponseWriter", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 51, - "community_name": "TestFixture", + "community": 56, + "community_name": ".WriteResponseAsync", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "namespace": "Anichron.API.Infrastructure", "scope_chain": [ - "s68" + "s54" ] }, - "norm_label": "videoproxygeneratorstests", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", - "source_location": "L6" + "norm_label": "healthcheckresponsewriter", + "source_file": "src/Anichron.API/Infrastructure/HealthCheckResponseWriter.cs", + "source_location": "L5" }, { "id": "src_anichron_api_tests_unit_infrastructure_healthcheckresponsewritertests_anichron_api_tests_unit_infrastructure_healthcheckresponsewritertests", @@ -4423,45 +4403,64 @@ "source_location": "L8" }, { - "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_anichron_worker_ingestion_middlewares_imageproxymiddleware", - "label": "ImageProxyMiddleware", + "id": "src_anichron_worker_crawling_workerstate_anichron_worker_crawling_workerstate", + "label": "WorkerState", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 57, - "community_name": "ImageProxyMiddleware", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { - "is_partial": true, - "namespace": "Anichron.Worker.Ingestion.Middlewares", + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s209" + "s0" ] }, - "norm_label": "imageproxymiddleware", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ImageProxyMiddleware.cs", - "source_location": "L10" + "norm_label": "workerstate", + "source_file": "src/Anichron.Worker/Crawling/WorkerState.cs", + "source_location": "L3" }, { - "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_anichron_worker_ingestion_middlewares_log", + "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log", "label": "Log", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 57, - "community_name": "ImageProxyMiddleware", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "is_nested_type": true, "is_partial": true, - "namespace": "Anichron.Worker.Ingestion.Middlewares", + "namespace": "Anichron.Worker.Startup", "scope_chain": [ - "s209" + "s192" ] }, "norm_label": "log", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ImageProxyMiddleware.cs", - "source_location": "L54" + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L65" + }, + { + "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_workerinitializer", + "label": "WorkerInitializer", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 57, + "community_name": "WorkerInitializer", + "file_type": "code", + "metadata": { + "is_partial": true, + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s192" + ] + }, + "norm_label": "workerinitializer", + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L10" }, { "id": "src_anichron_worker_ingestion_middlewares_exifextractionmiddleware_anichron_worker_ingestion_middlewares_exifextractionmiddleware", @@ -4549,7 +4548,7 @@ "_callable_class": true, "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "metadata": { "is_partial": true, @@ -4563,124 +4562,86 @@ "source_location": "L5" }, { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests", - "label": "LoggingMiddlewareTests", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_capturinglogger", + "label": "CapturingLogger", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "metadata": { + "is_nested_type": true, "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", "scope_chain": [ "s185" ] }, - "norm_label": "loggingmiddlewaretests", + "norm_label": "capturinglogger", "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/LoggingMiddlewareTests.cs", - "source_location": "L9" + "source_location": "L110" }, { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_capturinglogger", - "label": "CapturingLogger", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests", + "label": "LoggingMiddlewareTests", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 68, + "community": 65, "community_name": "CapturingLogger", "file_type": "code", "metadata": { - "is_nested_type": true, - "namespace": "Anichron.Worker.Tests.Unit.Maintenance", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", "scope_chain": [ - "s241" + "s185" ] }, - "norm_label": "capturinglogger", - "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", - "source_location": "L88" + "norm_label": "loggingmiddlewaretests", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/LoggingMiddlewareTests.cs", + "source_location": "L9" }, { - "id": "src_anichron_api_tests_unit_services_tokenservicetests_anichron_api_tests_unit_services_testfixture", + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture", "label": "TestFixture", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 7, + "community": 68, "community_name": "TestFixture", "file_type": "code", "metadata": { "is_nested_type": true, - "namespace": "Anichron.API.Tests.Unit.Services", + "namespace": "Anichron.Worker.Tests.Unit.Startup", "scope_chain": [ - "s251" + "s307" ] }, "norm_label": "testfixture", - "source_file": "src/Anichron.API.Tests.Unit/Services/TokenServiceTests.cs", - "source_location": "L19" - }, - { - "id": "src_anichron_api_tests_unit_services_tokenservicetests_anichron_api_tests_unit_services_tokenservicetests", - "label": "TokenServiceTests", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s251" - ] - }, - "norm_label": "tokenservicetests", - "source_file": "src/Anichron.API.Tests.Unit/Services/TokenServiceTests.cs", - "source_location": "L12" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository", - "label": "EfRefreshTokenRepository", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": "efrefreshtokenrepository", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", "source_location": "L15" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository", - "label": "IRefreshTokenRepository", + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests", + "label": "WorkerInitializerTests", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 7, + "community": 68, "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.Worker.Tests.Unit.Startup", "scope_chain": [ - "s66" + "s307" ] }, - "norm_label": "irefreshtokenrepository", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L6" + "norm_label": "workerinitializertests", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L13" }, { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken", - "label": "RefreshToken", + "id": "src_anichron_api_tests_unit_services_tokenservicetests_anichron_api_tests_unit_services_testfixture", + "label": "TestFixture", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -4688,18 +4649,19 @@ "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Domain", + "is_nested_type": true, + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s0" + "s251" ] }, - "norm_label": "refreshtoken", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L3" + "norm_label": "testfixture", + "source_file": "src/Anichron.API.Tests.Unit/Services/TokenServiceTests.cs", + "source_location": "L19" }, { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests", - "label": "RefreshTokenRepositoryTests", + "id": "src_anichron_api_tests_unit_services_tokenservicetests_anichron_api_tests_unit_services_tokenservicetests", + "label": "TokenServiceTests", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -4707,14 +4669,14 @@ "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s145" + "s251" ] }, - "norm_label": "refreshtokenrepositorytests", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L9" + "norm_label": "tokenservicetests", + "source_file": "src/Anichron.API.Tests.Unit/Services/TokenServiceTests.cs", + "source_location": "L12" }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_idempotencycheckmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_idempotencycheckmiddlewaretests", @@ -5128,6 +5090,44 @@ "source_file": "src/Anichron.Infrastructure/Data/PostgresConstants.cs", "source_location": "L3" }, + { + "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_efdatabasemigrator", + "label": "EfDatabaseMigrator", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 74, + "community_name": "Anichron.Infrastructure.Data", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s63" + ] + }, + "norm_label": "efdatabasemigrator", + "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", + "source_location": "L11" + }, + { + "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_idatabasemigrator", + "label": "IDatabaseMigrator", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 74, + "community_name": "Anichron.Infrastructure.Data", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s63" + ] + }, + "norm_label": "idatabasemigrator", + "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", + "source_location": "L6" + }, { "id": "src_anichron_worker_ingestion_pipeline_ingestionpipelinebuilder_anichron_worker_ingestion_pipeline_ingestionpipelinebuilder", "label": "IngestionPipelineBuilder", @@ -5520,38 +5520,6 @@ "source_file": "src/Anichron.API/Infrastructure/ApiPaths.cs", "source_location": "L22" }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_hashinvitetoken", - "label": ".HashInviteToken()", - "_callable": true, - "_origin": "ast", - "community": 0, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ], - "unresolved_calls": [ - { - "callee": "ToBase64String", - "receiver_type": "Convert", - "lang": "csharp", - "line": "L123" - }, - { - "callee": "HashData", - "receiver_type": "SHA256", - "lang": "csharp", - "line": "L123" - } - ] - }, - "norm_label": ".hashinvitetoken()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L122" - }, { "id": "src_anichron_api_services_registrationvalidator_anichron_api_services_iregistrationvalidator_validateasync", "label": ".ValidateAsync()", @@ -5738,7 +5706,7 @@ }, "norm_label": ".admincreateuserasync_dbuniqueviolationonemail_returnsemailtakenerror()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L844" + "source_location": "L860" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_admincreateuserasync_dbuniqueviolationonusername_returnsusernametakenerror", @@ -5756,7 +5724,7 @@ }, "norm_label": ".admincreateuserasync_dbuniqueviolationonusername_returnsusernametakenerror()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L856" + "source_location": "L872" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_admincreateuserasync_emailtaken_returnsemailtakenerror", @@ -5774,7 +5742,7 @@ }, "norm_label": ".admincreateuserasync_emailtaken_returnsemailtakenerror()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L775" + "source_location": "L791" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_admincreateuserasync_identityvalidationfails_returnsvalidationerror", @@ -5794,13 +5762,13 @@ "callee": "Multiple", "receiver_type": "Assert", "lang": "csharp", - "line": "L911" + "line": "L927" } ] }, "norm_label": ".admincreateuserasync_identityvalidationfails_returnsvalidationerror()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L900" + "source_location": "L916" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_admincreateuserasync_nullemail_throwsargumentnullexception", @@ -5818,7 +5786,7 @@ }, "norm_label": ".admincreateuserasync_nullemail_throwsargumentnullexception()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L890" + "source_location": "L906" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_admincreateuserasync_nullusername_throwsargumentnullexception", @@ -5836,7 +5804,7 @@ }, "norm_label": ".admincreateuserasync_nullusername_throwsargumentnullexception()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L880" + "source_location": "L896" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_admincreateuserasync_success_issuccessandtemporarypasswordnonempty", @@ -5856,13 +5824,13 @@ "callee": "Multiple", "receiver_type": "Assert", "lang": "csharp", - "line": "L792" + "line": "L808" } ] }, "norm_label": ".admincreateuserasync_success_issuccessandtemporarypasswordnonempty()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L785" + "source_location": "L801" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_admincreateuserasync_success_normalizesusernameandemail", @@ -5882,13 +5850,13 @@ "callee": "Multiple", "receiver_type": "Assert", "lang": "csharp", - "line": "L837" + "line": "L853" } ] }, "norm_label": ".admincreateuserasync_success_normalizesusernameandemail()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L830" + "source_location": "L846" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_admincreateuserasync_success_passwordishashedbeforestorage", @@ -5908,19 +5876,19 @@ "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L818" + "line": "L834" }, { "callee": "Multiple", "receiver_type": "Assert", "lang": "csharp", - "line": "L823" + "line": "L839" } ] }, "norm_label": ".admincreateuserasync_success_passwordishashedbeforestorage()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L813" + "source_location": "L829" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_admincreateuserasync_success_useraddedwithmustchangepasswordtrue", @@ -5940,13 +5908,13 @@ "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L804" + "line": "L820" } ] }, "norm_label": ".admincreateuserasync_success_useraddedwithmustchangepasswordtrue()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L799" + "source_location": "L815" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_admincreateuserasync_unknownconstraintviolation_throwsunreachableexception", @@ -5964,7 +5932,7 @@ }, "norm_label": ".admincreateuserasync_unknownconstraintviolation_throwsunreachableexception()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L868" + "source_location": "L884" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_admincreateuserasync_usernametaken_returnsusernametakenerror", @@ -5982,7 +5950,7 @@ }, "norm_label": ".admincreateuserasync_usernametaken_returnsusernametakenerror()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L765" + "source_location": "L781" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_changepasswordasync_newpasswordfailsvalidation_returnsvalidationerror", @@ -6002,19 +5970,19 @@ "callee": "Parse", "receiver_type": "Guid", "lang": "csharp", - "line": "L694" + "line": "L710" }, { "callee": "Multiple", "receiver_type": "Assert", "lang": "csharp", - "line": "L704" + "line": "L720" } ] }, "norm_label": ".changepasswordasync_newpasswordfailsvalidation_returnsvalidationerror()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L688" + "source_location": "L704" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_changepasswordasync_nullcurrentpassword_throwsargumentnullexception", @@ -6032,7 +6000,7 @@ }, "norm_label": ".changepasswordasync_nullcurrentpassword_throwsargumentnullexception()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L635" + "source_location": "L651" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_changepasswordasync_nullnewpassword_throwsargumentnullexception", @@ -6050,7 +6018,7 @@ }, "norm_label": ".changepasswordasync_nullnewpassword_throwsargumentnullexception()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L645" + "source_location": "L661" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_changepasswordasync_usernotfound_returnsinvalidcredentials", @@ -6070,19 +6038,19 @@ "callee": "Parse", "receiver_type": "Guid", "lang": "csharp", - "line": "L658" + "line": "L674" }, { "callee": "Multiple", "receiver_type": "Assert", "lang": "csharp", - "line": "L664" + "line": "L680" } ] }, "norm_label": ".changepasswordasync_usernotfound_returnsinvalidcredentials()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L655" + "source_location": "L671" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_changepasswordasync_validpasswords_returnsok", @@ -6102,13 +6070,13 @@ "callee": "Parse", "receiver_type": "Guid", "lang": "csharp", - "line": "L714" + "line": "L730" } ] }, "norm_label": ".changepasswordasync_validpasswords_returnsok()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L711" + "source_location": "L727" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_changepasswordasync_validpasswords_revokesallsessions", @@ -6128,19 +6096,19 @@ "callee": "Parse", "receiver_type": "Guid", "lang": "csharp", - "line": "L748" + "line": "L764" }, { "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L758" + "line": "L774" } ] }, "norm_label": ".changepasswordasync_validpasswords_revokesallsessions()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L745" + "source_location": "L761" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_changepasswordasync_validpasswords_updatespasswordhashandclearsmustchangepassword", @@ -6160,19 +6128,19 @@ "callee": "Parse", "receiver_type": "Guid", "lang": "csharp", - "line": "L729" + "line": "L745" }, { "callee": "Multiple", "receiver_type": "Assert", "lang": "csharp", - "line": "L738" + "line": "L754" } ] }, "norm_label": ".changepasswordasync_validpasswords_updatespasswordhashandclearsmustchangepassword()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L726" + "source_location": "L742" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_changepasswordasync_wrongcurrentpassword_returnsinvalidcredentials", @@ -6192,19 +6160,19 @@ "callee": "Parse", "receiver_type": "Guid", "lang": "csharp", - "line": "L674" + "line": "L690" }, { "callee": "Multiple", "receiver_type": "Assert", "lang": "csharp", - "line": "L681" + "line": "L697" } ] }, "norm_label": ".changepasswordasync_wrongcurrentpassword_returnsinvalidcredentials()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L671" + "source_location": "L687" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_hashinvitetoken_differentinputs_producedifferenthashes", @@ -6260,13 +6228,13 @@ "callee": "Multiple", "receiver_type": "Assert", "lang": "csharp", - "line": "L496" + "line": "L512" } ] }, "norm_label": ".loginasync_accountdisabled_returnsaccountdisabled()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L485" + "source_location": "L501" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_accountlocked_returnslockedwithretryafterseconds", @@ -6286,19 +6254,19 @@ "callee": "FromUtc", "receiver_type": "Instant", "lang": "csharp", - "line": "L510" + "line": "L526" }, { "callee": "Multiple", "receiver_type": "Assert", "lang": "csharp", - "line": "L520" + "line": "L536" } ] }, "norm_label": ".loginasync_accountlocked_returnslockedwithretryafterseconds()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L503" + "source_location": "L519" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_inputnormalization_trimsandlowercasesbeforelookup", @@ -6316,7 +6284,7 @@ }, "norm_label": ".loginasync_inputnormalization_trimsandlowercasesbeforelookup()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L589" + "source_location": "L605" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_nullpassword_throwsargumentnullexception", @@ -6372,13 +6340,13 @@ "callee": "Multiple", "receiver_type": "Assert", "lang": "csharp", - "line": "L582" + "line": "L598" } ] }, "norm_label": ".loginasync_successfullogin_resetslockoutvialockoutservice()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L571" + "source_location": "L587" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_unknownuser_returnsinvalidcredentials", @@ -6406,6 +6374,32 @@ "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", "source_location": "L454" }, + { + "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_unknownuser_verifiesagainstanullhashexactlyonce", + "label": ".LoginAsync_UnknownUser_VerifiesAgainstANullHashExactlyOnce()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Services", + "scope_chain": [ + "s227" + ], + "unresolved_calls": [ + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L481" + } + ] + }, + "norm_label": ".loginasync_unknownuser_verifiesagainstanullhashexactlyonce()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", + "source_location": "L473" + }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_validcredentials_returnsokwithtokens", "label": ".LoginAsync_ValidCredentials_ReturnsOkWithTokens()", @@ -6448,7 +6442,7 @@ }, "norm_label": ".loginasync_validcredentialsnotlocked_returnsok()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L542" + "source_location": "L558" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_whitespacecredential_returnsinvalidcredentials", @@ -6486,13 +6480,13 @@ "callee": "Multiple", "receiver_type": "Assert", "lang": "csharp", - "line": "L478" + "line": "L494" } ] }, "norm_label": ".loginasync_wrongpassword_returnsinvalidcredentials()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L468" + "source_location": "L484" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_wrongpasswordandnotlocked_delegatestolockoutservice", @@ -6512,13 +6506,13 @@ "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L539" + "line": "L555" } ] }, "norm_label": ".loginasync_wrongpasswordandnotlocked_delegatestolockoutservice()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L528" + "source_location": "L544" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_wrongpasswordduringactivelockout_doesnotcallrecordfailed", @@ -6538,13 +6532,13 @@ "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L568" + "line": "L584" } ] }, "norm_label": ".loginasync_wrongpasswordduringactivelockout_doesnotcallrecordfailed()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L556" + "source_location": "L572" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_refreshasync_delegatestotokenservice_returnsitsresult", @@ -6562,7 +6556,7 @@ }, "norm_label": ".refreshasync_delegatestotokenservice_returnsitsresult()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L607" + "source_location": "L623" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_registerasync_concurrentemailuniqueviolation_returnsemailtaken", @@ -6932,13 +6926,13 @@ "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L628" + "line": "L644" } ] }, "norm_label": ".revokeasync_delegatestotokenservice()", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L620" + "source_location": "L636" }, { "id": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_uniqueviolation", @@ -9088,7 +9082,7 @@ "_callable": true, "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Migrations", @@ -9120,7 +9114,7 @@ "_callable": true, "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Migrations", @@ -9164,7 +9158,7 @@ "_callable": true, "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Migrations", @@ -9202,7 +9196,7 @@ "_callable": true, "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Migrations", @@ -9234,7 +9228,7 @@ "_callable": true, "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Migrations", @@ -9266,7 +9260,7 @@ "_callable": true, "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Migrations", @@ -9299,170 +9293,404 @@ "source_location": "L20" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegvideoprocessor_detectencoderasync", - "label": ".DetectEncoderAsync()", + "id": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_issueasync", + "label": ".IssueAsync()", "_callable": true, "_origin": "ast", "community": 108, - "community_name": "FfmpegVideoProcessor", + "community_name": "TokenService", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s69" + "s222" ] }, - "norm_label": ".detectencoderasync()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", - "source_location": "L44" + "norm_label": ".issueasync()", + "source_file": "src/Anichron.API/Services/TokenService.cs", + "source_location": "L13" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegvideoprocessor_dispose", - "label": ".Dispose()", + "id": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_markallsessionsrevokedasync", + "label": ".MarkAllSessionsRevokedAsync()", "_callable": true, "_origin": "ast", "community": 108, - "community_name": "FfmpegVideoProcessor", + "community_name": "TokenService", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s69" + "s222" + ] + }, + "norm_label": ".markallsessionsrevokedasync()", + "source_file": "src/Anichron.API/Services/TokenService.cs", + "source_location": "L16" + }, + { + "id": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_refreshasync", + "label": ".RefreshAsync()", + "_callable": true, + "_origin": "ast", + "community": 108, + "community_name": "TokenService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s222" + ] + }, + "norm_label": ".refreshasync()", + "source_file": "src/Anichron.API/Services/TokenService.cs", + "source_location": "L14" + }, + { + "id": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_revokeasync", + "label": ".RevokeAsync()", + "_callable": true, + "_origin": "ast", + "community": 108, + "community_name": "TokenService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s222" + ] + }, + "norm_label": ".revokeasync()", + "source_file": "src/Anichron.API/Services/TokenService.cs", + "source_location": "L15" + }, + { + "id": "src_anichron_api_services_tokenservice_anichron_api_services_tokenservice_generaterefreshtoken", + "label": ".GenerateRefreshToken()", + "_callable": true, + "_origin": "ast", + "community": 108, + "community_name": "TokenService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s222" ], "unresolved_calls": [ { - "callee": "Dispose", - "receiver_type": "SemaphoreSlim", + "callee": "ToBase64String", + "receiver_type": "Convert", "lang": "csharp", - "line": "L102" + "line": "L100" + }, + { + "callee": "GetBytes", + "receiver_type": "RandomNumberGenerator", + "lang": "csharp", + "line": "L100" } ] }, - "norm_label": ".dispose()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "norm_label": ".generaterefreshtoken()", + "source_file": "src/Anichron.API/Services/TokenService.cs", + "source_location": "L99" + }, + { + "id": "src_anichron_api_services_tokenservice_anichron_api_services_tokenservice_hashtoken", + "label": ".HashToken()", + "_callable": true, + "_origin": "ast", + "community": 108, + "community_name": "TokenService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s222" + ], + "unresolved_calls": [ + { + "callee": "ToBase64String", + "receiver_type": "Convert", + "lang": "csharp", + "line": "L103" + }, + { + "callee": "HashData", + "receiver_type": "SHA256", + "lang": "csharp", + "line": "L103" + }, + { + "callee": "FromBase64String", + "receiver_type": "Convert", + "lang": "csharp", + "line": "L103" + } + ] + }, + "norm_label": ".hashtoken()", + "source_file": "src/Anichron.API/Services/TokenService.cs", "source_location": "L102" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegvideoprocessor_probeencoderasync", - "label": ".ProbeEncoderAsync()", + "id": "src_anichron_api_services_tokenservice_anichron_api_services_tokenservice_issueasync", + "label": ".IssueAsync()", "_callable": true, "_origin": "ast", "community": 108, - "community_name": "FfmpegVideoProcessor", + "community_name": "TokenService", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s69" + "s222" + ], + "unresolved_calls": [ + { + "callee": "GetCurrentInstant", + "receiver_type": "IClock", + "lang": "csharp", + "line": "L32" + }, + { + "callee": "FromDays", + "receiver_type": "Duration", + "lang": "csharp", + "line": "L40" + } ] }, - "norm_label": ".probeencoderasync()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", - "source_location": "L61" + "norm_label": ".issueasync()", + "source_file": "src/Anichron.API/Services/TokenService.cs", + "source_location": "L29" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegvideoprocessor_runffmpegasync", - "label": ".RunFfmpegAsync()", + "id": "src_anichron_api_services_tokenservice_anichron_api_services_tokenservice_markallsessionsrevokedasync", + "label": ".MarkAllSessionsRevokedAsync()", "_callable": true, "_origin": "ast", "community": 108, - "community_name": "FfmpegVideoProcessor", + "community_name": "TokenService", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s69" + "s222" ] }, - "norm_label": ".runffmpegasync()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", - "source_location": "L78" + "norm_label": ".markallsessionsrevokedasync()", + "source_file": "src/Anichron.API/Services/TokenService.cs", + "source_location": "L96" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegvideoprocessor_transcodeasync", - "label": ".TranscodeAsync()", + "id": "src_anichron_api_services_tokenservice_anichron_api_services_tokenservice_refreshasync", + "label": ".RefreshAsync()", "_callable": true, "_origin": "ast", "community": 108, - "community_name": "FfmpegVideoProcessor", + "community_name": "TokenService", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s69" + "s222" ], "unresolved_calls": [ { - "callee": "WaitAsync", - "receiver_type": "SemaphoreSlim", + "callee": "GetCurrentInstant", + "receiver_type": "IClock", "lang": "csharp", - "line": "L30" + "line": "L51" }, { - "callee": "Release", - "receiver_type": "SemaphoreSlim", + "callee": "Max", + "receiver_type": "Math", "lang": "csharp", - "line": "L38" + "line": "L74" + }, + { + "callee": "Ceiling", + "receiver_type": "Math", + "lang": "csharp", + "line": "L74" } ] }, - "norm_label": ".transcodeasync()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", - "source_location": "L27" + "norm_label": ".refreshasync()", + "source_file": "src/Anichron.API/Services/TokenService.cs", + "source_location": "L48" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ivideoprocessor_transcodeasync", - "label": ".TranscodeAsync()", + "id": "src_anichron_api_services_tokenservice_anichron_api_services_tokenservice_revokeasync", + "label": ".RevokeAsync()", "_callable": true, "_origin": "ast", "community": 108, - "community_name": "FfmpegVideoProcessor", + "community_name": "TokenService", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s69" + "s222" + ], + "unresolved_calls": [ + { + "callee": "GetCurrentInstant", + "receiver_type": "IClock", + "lang": "csharp", + "line": "L92" + } ] }, - "norm_label": ".transcodeasync()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", - "source_location": "L8" + "norm_label": ".revokeasync()", + "source_file": "src/Anichron.API/Services/TokenService.cs", + "source_location": "L83" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_log_encoderselected", - "label": ".EncoderSelected()", + "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_log_crawlingpath", + "label": ".CrawlingPath()", "_callable": true, "_origin": "ast", - "community": 108, - "community_name": "FfmpegVideoProcessor", + "community": 109, + "community_name": "Worker", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s69" + "s134" ] }, - "norm_label": ".encoderselected()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", - "source_location": "L106" + "norm_label": ".crawlingpath()", + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L55" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_log_encoderunavailable", - "label": ".EncoderUnavailable()", + "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_log_starting", + "label": ".Starting()", "_callable": true, "_origin": "ast", - "community": 108, - "community_name": "FfmpegVideoProcessor", + "community": 109, + "community_name": "Worker", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s69" + "s134" ] }, - "norm_label": ".encoderunavailable()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", - "source_location": "L109" + "norm_label": ".starting()", + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L52" + }, + { + "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker_crawlallasync", + "label": ".CrawlAllAsync()", + "_callable": true, + "_origin": "ast", + "community": 109, + "community_name": "Worker", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Crawling", + "scope_chain": [ + "s134" + ], + "unresolved_calls": [ + { + "callee": "CreateScope", + "receiver_type": "IServiceScopeFactory", + "lang": "csharp", + "line": "L33" + } + ] + }, + "norm_label": ".crawlallasync()", + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L31" + }, + { + "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker_crawlasync", + "label": ".CrawlAsync()", + "_callable": true, + "_origin": "ast", + "community": 109, + "community_name": "Worker", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Crawling", + "scope_chain": [ + "s134" + ] + }, + "norm_label": ".crawlasync()", + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L44" + }, + { + "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker_executeasync", + "label": ".ExecuteAsync()", + "_callable": true, + "_origin": "ast", + "community": 109, + "community_name": "Worker", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Crawling", + "scope_chain": [ + "s134" + ], + "unresolved_calls": [ + { + "callee": "Delay", + "receiver_type": "Task", + "lang": "csharp", + "line": "L27" + }, + { + "callee": "FromHours", + "receiver_type": "TimeSpan", + "lang": "csharp", + "line": "L27" + } + ] + }, + "norm_label": ".executeasync()", + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L17" + }, + { + "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_testfixture_build", + "label": ".Build()", + "_callable": true, + "_origin": "ast", + "community": 109, + "community_name": "Worker", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Crawling", + "scope_chain": [ + "s306" + ], + "unresolved_calls": [ + { + "callee": "Create", + "receiver_type": "Options", + "lang": "csharp", + "line": "L44" + }, + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L45" + } + ] + }, + "norm_label": ".build()", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", + "source_location": "L39" }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_persistencemiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_persistencemiddlewaretests_invokeasync_always_addsassettorepositoryasync", @@ -9894,19 +10122,19 @@ "callee": "GetBytes", "receiver_type": "RandomNumberGenerator", "lang": "csharp", - "line": "L18" + "line": "L22" }, { "callee": "ToBase64String", "receiver_type": "Convert", "lang": "csharp", - "line": "L24" + "line": "L28" } ] }, "norm_label": ".hash()", "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L16" + "source_location": "L20" }, { "id": "src_anichron_api_security_passwordhasher_anichron_api_security_argon2passwordhasher_runargon2id", @@ -9926,13 +10154,13 @@ "callee": "GetBytes", "receiver_type": "Argon2id", "lang": "csharp", - "line": "L58" + "line": "L83" } ] }, "norm_label": ".runargon2id()", "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L49" + "source_location": "L74" }, { "id": "src_anichron_api_security_passwordhasher_anichron_api_security_argon2passwordhasher_runargon2idsecure", @@ -9952,13 +10180,13 @@ "callee": "ZeroMemory", "receiver_type": "CryptographicOperations", "lang": "csharp", - "line": "L45" + "line": "L70" } ] }, "norm_label": ".runargon2idsecure()", "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L36" + "source_location": "L61" }, { "id": "src_anichron_api_security_passwordhasher_anichron_api_security_argon2passwordhasher_verify", @@ -9974,23 +10202,35 @@ "s124" ], "unresolved_calls": [ + { + "callee": "GetBytes", + "receiver_type": "RandomNumberGenerator", + "lang": "csharp", + "line": "L49" + }, + { + "callee": "ZeroMemory", + "receiver_type": "CryptographicOperations", + "lang": "csharp", + "line": "L50" + }, { "callee": "FromBase64String", "receiver_type": "Convert", "lang": "csharp", - "line": "L29" + "line": "L54" }, { "callee": "FixedTimeEquals", "receiver_type": "CryptographicOperations", "lang": "csharp", - "line": "L33" + "line": "L58" } ] }, "norm_label": ".verify()", "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L27" + "source_location": "L31" }, { "id": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_hash_samepassword_producesdifferenthashes", @@ -10003,12 +10243,12 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Security", "scope_chain": [ - "s30" + "s56" ] }, "norm_label": ".hash_samepassword_producesdifferenthashes()", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L64" + "source_location": "L65" }, { "id": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_hash_validpassword_returnsbase64stringofexpectedlength", @@ -10021,12 +10261,12 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Security", "scope_chain": [ - "s30" + "s56" ] }, "norm_label": ".hash_validpassword_returnsbase64stringofexpectedlength()", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L12" + "source_location": "L13" }, { "id": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_correctpassword_returnstrue", @@ -10039,12 +10279,12 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Security", "scope_chain": [ - "s30" + "s56" ] }, "norm_label": ".verify_correctpassword_returnstrue()", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L22" + "source_location": "L23" }, { "id": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_invalidbase64storedhash_throwsformatexception", @@ -10057,12 +10297,56 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Security", "scope_chain": [ - "s30" + "s56" ] }, "norm_label": ".verify_invalidbase64storedhash_throwsformatexception()", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L44" + "source_location": "L45" + }, + { + "id": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_nullstoredhash_doesnotshortcircuit", + "label": ".Verify_NullStoredHash_DoesNotShortCircuit()", + "_callable": true, + "_origin": "ast", + "community": 112, + "community_name": "Argon2PasswordHasher", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Security", + "scope_chain": [ + "s56" + ], + "unresolved_calls": [ + { + "callee": "StartNew", + "receiver_type": "Stopwatch", + "lang": "csharp", + "line": "L123" + } + ] + }, + "norm_label": ".verify_nullstoredhash_doesnotshortcircuit()", + "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", + "source_location": "L118" + }, + { + "id": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_nullstoredhash_returnsfalse", + "label": ".Verify_NullStoredHash_ReturnsFalse()", + "_callable": true, + "_origin": "ast", + "community": 112, + "community_name": "Argon2PasswordHasher", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Security", + "scope_chain": [ + "s56" + ] + }, + "norm_label": ".verify_nullstoredhash_returnsfalse()", + "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", + "source_location": "L103" }, { "id": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_tamperedstoredhash_returnsfalse", @@ -10075,12 +10359,12 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Security", "scope_chain": [ - "s30" + "s56" ] }, "norm_label": ".verify_tamperedstoredhash_returnsfalse()", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L75" + "source_location": "L76" }, { "id": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_truncatedstoredhash_throwsexception", @@ -10093,12 +10377,12 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Security", "scope_chain": [ - "s30" + "s56" ] }, "norm_label": ".verify_truncatedstoredhash_throwsexception()", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L54" + "source_location": "L55" }, { "id": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_wrongpassword_returnsfalse", @@ -10111,12 +10395,38 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Security", "scope_chain": [ - "s30" + "s56" ] }, "norm_label": ".verify_wrongpassword_returnsfalse()", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L32" + "source_location": "L33" + }, + { + "id": "src_anichron_core_data_anichrondbcontext_anichron_core_data_anichrondbcontext_executeintransactionasync", + "label": ".ExecuteInTransactionAsync()", + "_callable": true, + "_origin": "ast", + "community": 113, + "community_name": "AnichronDbContext", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data", + "scope_chain": [ + "s69" + ], + "unresolved_calls": [ + { + "callee": "BeginTransactionAsync", + "receiver_type": "Database", + "lang": "csharp", + "line": "L20" + } + ] + }, + "norm_label": ".executeintransactionasync()", + "source_file": "src/Anichron.Core/Data/AnichronDbContext.cs", + "source_location": "L18" }, { "id": "src_anichron_core_data_anichrondbcontext_anichron_core_data_anichrondbcontext_onmodelcreating", @@ -10162,6 +10472,32 @@ "source_file": "src/Anichron.Core/Data/AnichronDbContextFactory.cs", "source_location": "L8" }, + { + "id": "src_anichron_worker_tests_unit_settings_workersettingsvalidatortests_anichron_worker_tests_unit_settings_workersettingsvalidatortests_getfailures", + "label": ".GetFailures()", + "_callable": true, + "_origin": "ast", + "community": 117, + "community_name": "WorkerSettingsValidatorTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Settings", + "scope_chain": [ + "s78" + ], + "unresolved_calls": [ + { + "callee": "TryValidateObject", + "receiver_type": "Validator", + "lang": "csharp", + "line": "L30" + } + ] + }, + "norm_label": ".getfailures()", + "source_file": "src/Anichron.Worker.Tests.Unit/Settings/WorkerSettingsValidatorTests.cs", + "source_location": "L27" + }, { "id": "src_anichron_worker_tests_unit_settings_workersettingsvalidatortests_anichron_worker_tests_unit_settings_workersettingsvalidatortests_isvalid", "label": ".IsValid()", @@ -10508,7 +10844,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -10540,7 +10876,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -10558,7 +10894,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Security", @@ -10576,7 +10912,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Security", @@ -10586,7 +10922,7 @@ }, "norm_label": ".verify()", "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L11" + "source_location": "L15" }, { "id": "src_anichron_api_services_adminresetservice_anichron_api_services_adminresetservice_resetuserpasswordasync", @@ -10594,7 +10930,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -10632,7 +10968,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -10650,7 +10986,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -10662,25 +10998,25 @@ "callee": "ThrowIfNull", "receiver_type": "ArgumentNullException", "lang": "csharp", - "line": "L202" + "line": "L208" }, { "callee": "ToBase64String", "receiver_type": "Convert", "lang": "csharp", - "line": "L218" + "line": "L224" }, { "callee": "GetBytes", "receiver_type": "RandomNumberGenerator", "lang": "csharp", - "line": "L218" + "line": "L224" } ] }, "norm_label": ".admincreateuserasync()", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L200" + "source_location": "L206" }, { "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_changepasswordasync", @@ -10688,7 +11024,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -10700,19 +11036,19 @@ "callee": "ThrowIfNull", "receiver_type": "ArgumentNullException", "lang": "csharp", - "line": "L177" + "line": "L183" }, { "callee": "GetCurrentInstant", "receiver_type": "IClock", "lang": "csharp", - "line": "L192" + "line": "L198" } ] }, "norm_label": ".changepasswordasync()", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L175" + "source_location": "L181" }, { "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_detectconstrainterror", @@ -10720,7 +11056,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -10730,7 +11066,39 @@ }, "norm_label": ".detectconstrainterror()", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L243" + "source_location": "L249" + }, + { + "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_hashinvitetoken", + "label": ".HashInviteToken()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "AuthService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s253" + ], + "unresolved_calls": [ + { + "callee": "ToBase64String", + "receiver_type": "Convert", + "lang": "csharp", + "line": "L121" + }, + { + "callee": "HashData", + "receiver_type": "SHA256", + "lang": "csharp", + "line": "L121" + } + ] + }, + "norm_label": ".hashinvitetoken()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L120" }, { "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_loginasync", @@ -10738,7 +11106,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -10750,31 +11118,31 @@ "callee": "ThrowIfNull", "receiver_type": "ArgumentNullException", "lang": "csharp", - "line": "L127" + "line": "L125" }, { "callee": "GetCurrentInstant", "receiver_type": "IClock", "lang": "csharp", - "line": "L136" + "line": "L142" }, { "callee": "Ceiling", "receiver_type": "Math", "lang": "csharp", - "line": "L152" + "line": "L158" }, { "callee": "Max", "receiver_type": "Math", "lang": "csharp", - "line": "L153" + "line": "L159" } ] }, "norm_label": ".loginasync()", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L125" + "source_location": "L123" }, { "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_refreshasync", @@ -10782,7 +11150,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -10792,7 +11160,7 @@ }, "norm_label": ".refreshasync()", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L169" + "source_location": "L175" }, { "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_registerasync", @@ -10800,7 +11168,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -10812,19 +11180,19 @@ "callee": "ThrowIfNull", "receiver_type": "ArgumentNullException", "lang": "csharp", - "line": "L69" + "line": "L67" }, { "callee": "GetCurrentInstant", "receiver_type": "IClock", "lang": "csharp", - "line": "L74" + "line": "L72" } ] }, "norm_label": ".registerasync()", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L67" + "source_location": "L65" }, { "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_revokeasync", @@ -10832,7 +11200,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -10842,7 +11210,7 @@ }, "norm_label": ".revokeasync()", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L172" + "source_location": "L178" }, { "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_admincreateuserasync", @@ -10850,7 +11218,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -10868,7 +11236,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -10881,12 +11249,12 @@ "source_location": "L49" }, { - "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_refreshasync", - "label": ".RefreshAsync()", + "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_loginasync", + "label": ".LoginAsync()", "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -10894,17 +11262,17 @@ "s253" ] }, - "norm_label": ".refreshasync()", + "norm_label": ".loginasync()", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L47" + "source_location": "L46" }, { - "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_revokeasync", - "label": ".RevokeAsync()", + "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_refreshasync", + "label": ".RefreshAsync()", "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -10912,273 +11280,53 @@ "s253" ] }, - "norm_label": ".revokeasync()", + "norm_label": ".refreshasync()", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L48" - }, - { - "id": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_issueasync", - "label": ".IssueAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s222" - ] - }, - "norm_label": ".issueasync()", - "source_file": "src/Anichron.API/Services/TokenService.cs", - "source_location": "L13" - }, - { - "id": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_markallsessionsrevokedasync", - "label": ".MarkAllSessionsRevokedAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s222" - ] - }, - "norm_label": ".markallsessionsrevokedasync()", - "source_file": "src/Anichron.API/Services/TokenService.cs", - "source_location": "L16" + "source_location": "L47" }, { - "id": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_refreshasync", - "label": ".RefreshAsync()", + "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_registerasync", + "label": ".RegisterAsync()", "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", "scope_chain": [ - "s222" + "s253" ] }, - "norm_label": ".refreshasync()", - "source_file": "src/Anichron.API/Services/TokenService.cs", - "source_location": "L14" + "norm_label": ".registerasync()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L45" }, { - "id": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_revokeasync", + "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_revokeasync", "label": ".RevokeAsync()", "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", "scope_chain": [ - "s222" + "s253" ] }, "norm_label": ".revokeasync()", - "source_file": "src/Anichron.API/Services/TokenService.cs", - "source_location": "L15" - }, - { - "id": "src_anichron_api_services_tokenservice_anichron_api_services_tokenservice_generaterefreshtoken", - "label": ".GenerateRefreshToken()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s222" - ], - "unresolved_calls": [ - { - "callee": "ToBase64String", - "receiver_type": "Convert", - "lang": "csharp", - "line": "L100" - }, - { - "callee": "GetBytes", - "receiver_type": "RandomNumberGenerator", - "lang": "csharp", - "line": "L100" - } - ] - }, - "norm_label": ".generaterefreshtoken()", - "source_file": "src/Anichron.API/Services/TokenService.cs", - "source_location": "L99" - }, - { - "id": "src_anichron_api_services_tokenservice_anichron_api_services_tokenservice_hashtoken", - "label": ".HashToken()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s222" - ], - "unresolved_calls": [ - { - "callee": "ToBase64String", - "receiver_type": "Convert", - "lang": "csharp", - "line": "L103" - }, - { - "callee": "HashData", - "receiver_type": "SHA256", - "lang": "csharp", - "line": "L103" - }, - { - "callee": "FromBase64String", - "receiver_type": "Convert", - "lang": "csharp", - "line": "L103" - } - ] - }, - "norm_label": ".hashtoken()", - "source_file": "src/Anichron.API/Services/TokenService.cs", - "source_location": "L102" - }, - { - "id": "src_anichron_api_services_tokenservice_anichron_api_services_tokenservice_issueasync", - "label": ".IssueAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s222" - ], - "unresolved_calls": [ - { - "callee": "GetCurrentInstant", - "receiver_type": "IClock", - "lang": "csharp", - "line": "L32" - }, - { - "callee": "FromDays", - "receiver_type": "Duration", - "lang": "csharp", - "line": "L40" - } - ] - }, - "norm_label": ".issueasync()", - "source_file": "src/Anichron.API/Services/TokenService.cs", - "source_location": "L29" - }, - { - "id": "src_anichron_api_services_tokenservice_anichron_api_services_tokenservice_markallsessionsrevokedasync", - "label": ".MarkAllSessionsRevokedAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s222" - ] - }, - "norm_label": ".markallsessionsrevokedasync()", - "source_file": "src/Anichron.API/Services/TokenService.cs", - "source_location": "L96" - }, - { - "id": "src_anichron_api_services_tokenservice_anichron_api_services_tokenservice_refreshasync", - "label": ".RefreshAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s222" - ], - "unresolved_calls": [ - { - "callee": "GetCurrentInstant", - "receiver_type": "IClock", - "lang": "csharp", - "line": "L51" - }, - { - "callee": "Max", - "receiver_type": "Math", - "lang": "csharp", - "line": "L74" - }, - { - "callee": "Ceiling", - "receiver_type": "Math", - "lang": "csharp", - "line": "L74" - } - ] - }, - "norm_label": ".refreshasync()", - "source_file": "src/Anichron.API/Services/TokenService.cs", + "source_file": "src/Anichron.API/Services/AuthService.cs", "source_location": "L48" }, - { - "id": "src_anichron_api_services_tokenservice_anichron_api_services_tokenservice_revokeasync", - "label": ".RevokeAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s222" - ], - "unresolved_calls": [ - { - "callee": "GetCurrentInstant", - "receiver_type": "IClock", - "lang": "csharp", - "line": "L92" - } - ] - }, - "norm_label": ".revokeasync()", - "source_file": "src/Anichron.API/Services/TokenService.cs", - "source_location": "L83" - }, { "id": "src_anichron_api_tests_unit_services_adminresetservicetests_anichron_api_tests_unit_services_testfixture_createtestee", "label": ".CreateTestee()", "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -11196,7 +11344,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Data", @@ -11214,7 +11362,7 @@ "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Data", @@ -11227,80 +11375,22 @@ "source_location": "L5" }, { - "id": "src_anichron_core_guidfactory_anichron_core_iguidfactory_newguid", - "label": ".NewGuid()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core", - "scope_chain": [ - "s0" - ] - }, - "norm_label": ".newguid()", - "source_file": "src/Anichron.Core/GuidFactory.cs", - "source_location": "L5" - }, - { - "id": "src_anichron_core_guidfactory_anichron_core_timeorderedguidfactory_newguid", - "label": ".NewGuid()", + "id": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_iuserrepository_add", + "label": ".Add()", "_callable": true, "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "metadata": { - "namespace": "Anichron.Core", - "scope_chain": [ - "s0" - ], - "unresolved_calls": [ - { - "callee": "CreateVersion7", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L10" - } - ] - }, - "norm_label": ".newguid()", - "source_file": "src/Anichron.Core/GuidFactory.cs", - "source_location": "L10" - }, - { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_testfixture_build", - "label": ".Build()", - "_callable": true, - "_origin": "ast", - "community": 120, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Maintenance", + "namespace": "Anichron.Core.Data.Repository", "scope_chain": [ - "s241" - ], - "unresolved_calls": [ - { - "callee": "Create", - "receiver_type": "Options", - "lang": "csharp", - "line": "L38" - }, - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L39" - } + "s66" ] }, - "norm_label": ".build()", - "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", - "source_location": "L36" + "norm_label": ".add()", + "source_file": "src/Anichron.Core/Data/Repository/UserRepository.cs", + "source_location": "L17" }, { "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_runcleanupasync_callsdeleteexpiredwithcurrentinstantasync", @@ -11386,6 +11476,24 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", "source_location": "L75" }, + { + "id": "src_anichron_worker_tests_unit_ingestion_exifdatatests_anichron_worker_tests_unit_ingestion_exifdatatests_empty_hasallzeroandnullfields", + "label": ".Empty_HasAllZeroAndNullFields()", + "_callable": true, + "_origin": "ast", + "community": 121, + "community_name": "Anichron.Worker.Ingestion.Pipeline", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion", + "scope_chain": [ + "s34" + ] + }, + "norm_label": ".empty_hasallzeroandnullfields()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/ExifDataTests.cs", + "source_location": "L7" + }, { "id": "src_anichron_worker_maintenance_tokencleanupservice_anichron_worker_maintenance_log_cleanupfailed", "label": ".CleanupFailed()", @@ -11487,22 +11595,36 @@ "source_location": "L33" }, { - "id": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_efuserrepository_add", - "label": ".Add()", + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_testfixture_build", + "label": ".Build()", "_callable": true, "_origin": "ast", - "community": 14, - "community_name": "User", + "community": 138, + "community_name": "TokenCleanupService", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.Worker.Tests.Unit.Maintenance", "scope_chain": [ - "s66" + "s241" + ], + "unresolved_calls": [ + { + "callee": "Create", + "receiver_type": "Options", + "lang": "csharp", + "line": "L38" + }, + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L39" + } ] }, - "norm_label": ".add()", - "source_file": "src/Anichron.Core/Data/Repository/UserRepository.cs", - "source_location": "L51" + "norm_label": ".build()", + "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", + "source_location": "L36" }, { "id": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_efuserrepository_anyasync", @@ -11684,24 +11806,6 @@ "source_file": "src/Anichron.Core/Data/Repository/UserRepository.cs", "source_location": "L54" }, - { - "id": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_iuserrepository_add", - "label": ".Add()", - "_callable": true, - "_origin": "ast", - "community": 14, - "community_name": "User", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".add()", - "source_file": "src/Anichron.Core/Data/Repository/UserRepository.cs", - "source_location": "L17" - }, { "id": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_iuserrepository_anyasync", "label": ".AnyAsync()", @@ -12816,13 +12920,223 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ImageProxyGeneratorsTests.cs", "source_location": "L20" }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_add", + "label": ".Add()", + "_callable": true, + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".add()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L23" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_findbyhashasync", + "label": ".FindByHashAsync()", + "_callable": true, + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".findbyhashasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L20" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_add_addstokentocontext", + "label": ".Add_AddsTokenToContext()", + "_callable": true, + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ] + }, + "norm_label": ".add_addstokentocontext()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L105" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_createdb", + "label": ".CreateDb()", + "_callable": true, + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L16" + } + ] + }, + "norm_label": ".createdb()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L13" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashasync_knownhash_returnstoken", + "label": ".FindByHashAsync_KnownHash_ReturnsToken()", + "_callable": true, + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ] + }, + "norm_label": ".findbyhashasync_knownhash_returnstoken()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L72" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashasync_unknownhash_returnsnull", + "label": ".FindByHashAsync_UnknownHash_ReturnsNull()", + "_callable": true, + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ] + }, + "norm_label": ".findbyhashasync_unknownhash_returnsnull()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L90" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashwithuserasync_knownhash_returnstokenwithuserloaded", + "label": ".FindByHashWithUserAsync_KnownHash_ReturnsTokenWithUserLoaded()", + "_callable": true, + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ] + }, + "norm_label": ".findbyhashwithuserasync_knownhash_returnstokenwithuserloaded()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L39" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashwithuserasync_unknownhash_returnsnull", + "label": ".FindByHashWithUserAsync_UnknownHash_ReturnsNull()", + "_callable": true, + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ] + }, + "norm_label": ".findbyhashwithuserasync_unknownhash_returnsnull()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L57" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_maketoken", + "label": ".MakeToken()", + "_callable": true, + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L27" + }, + { + "callee": "FromDays", + "receiver_type": "Duration", + "lang": "csharp", + "line": "L31" + } + ] + }, + "norm_label": ".maketoken()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L24" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_makeuser", + "label": ".MakeUser()", + "_callable": true, + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L22" + } + ] + }, + "norm_label": ".makeuser()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L21" + }, { "id": "src_anichron_worker_startup_databasemigratorservice_anichron_worker_startup_databasemigratorservice_startasync", "label": ".StartAsync()", "_callable": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Startup", @@ -12854,7 +13168,7 @@ "_callable": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Startup", @@ -12872,7 +13186,7 @@ "_callable": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Startup", @@ -12890,7 +13204,7 @@ "_callable": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Startup", @@ -12908,7 +13222,7 @@ "_callable": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Startup", @@ -12920,153 +13234,13 @@ "source_file": "src/Anichron.Worker/Startup/DatabaseMigratorService.cs", "source_location": "L42" }, - { - "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_efdatabasemigrator_migrateasync", - "label": ".MigrateAsync()", - "_callable": true, - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s63" - ] - }, - "norm_label": ".migrateasync()", - "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", - "source_location": "L13" - }, - { - "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_idatabasemigrator_migrateasync", - "label": ".MigrateAsync()", - "_callable": true, - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s63" - ] - }, - "norm_label": ".migrateasync()", - "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", - "source_location": "L8" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log_allusermode", - "label": ".AllUserMode()", - "_callable": true, - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s192" - ] - }, - "norm_label": ".allusermode()", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L67" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log_storageconfigcreated", - "label": ".StorageConfigCreated()", - "_callable": true, - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s192" - ] - }, - "norm_label": ".storageconfigcreated()", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L73" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log_storageconfigexists", - "label": ".StorageConfigExists()", - "_callable": true, - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s192" - ] - }, - "norm_label": ".storageconfigexists()", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L70" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_workerinitializer_startasync", - "label": ".StartAsync()", - "_callable": true, - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s192" - ], - "unresolved_calls": [ - { - "callee": "CreateAsyncScope", - "receiver_type": "IServiceScopeFactory", - "lang": "csharp", - "line": "L26" - }, - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L52" - } - ] - }, - "norm_label": ".startasync()", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L18" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_workerinitializer_stopasync", - "label": ".StopAsync()", - "_callable": true, - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s192" - ] - }, - "norm_label": ".stopasync()", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L63" - }, { "id": "src_anichron_worker_tests_unit_startup_databasemigratorservicetests_anichron_worker_tests_unit_startup_databasemigratorservicetests_startasync_allattemptsexhausted_migratecalledmaxattemptstimesasync", "label": ".StartAsync_AllAttemptsExhausted_MigrateCalledMaxAttemptsTimesAsync()", "_callable": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -13098,7 +13272,7 @@ "_callable": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -13130,7 +13304,7 @@ "_callable": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -13156,7 +13330,7 @@ "_callable": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -13182,7 +13356,7 @@ "_callable": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -13208,7 +13382,7 @@ "_callable": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -13226,7 +13400,7 @@ "_callable": true, "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -13247,60 +13421,152 @@ "source_location": "L27" }, { - "id": "src_anichron_api_security_jwtfactory_anichron_api_security_ijwtfactory_create", - "label": ".Create()", + "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_workertests_crawlallasync_activeconfig_runspipelinewithcorrectconfigasync", + "label": ".CrawlAllAsync_ActiveConfig_RunsPipelineWithCorrectConfigAsync()", "_callable": true, "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", + "community": 162, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Security", + "namespace": "Anichron.Worker.Tests.Unit.Crawling", "scope_chain": [ - "s220" + "s306" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L122" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L123" + } ] }, - "norm_label": ".create()", - "source_file": "src/Anichron.API/Security/JwtFactory.cs", - "source_location": "L13" + "norm_label": ".crawlallasync_activeconfig_runspipelinewithcorrectconfigasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", + "source_location": "L118" }, { - "id": "src_anichron_api_security_jwtfactory_anichron_api_security_jwtfactory_create", - "label": ".Create()", + "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_workertests_crawlallasync_multipleactiveconfigs_runspipelineforeachasync", + "label": ".CrawlAllAsync_MultipleActiveConfigs_RunsPipelineForEachAsync()", "_callable": true, "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", + "community": 162, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Security", + "namespace": "Anichron.Worker.Tests.Unit.Crawling", "scope_chain": [ - "s220" + "s306" ], "unresolved_calls": [ { - "callee": "Add", - "receiver_type": "List", + "callee": "NewGuid", + "receiver_type": "Guid", "lang": "csharp", - "line": "L44" + "line": "L94" }, { - "callee": "GetCurrentInstant", - "receiver_type": "IClock", + "callee": "Any", + "receiver_type": "Arg", "lang": "csharp", - "line": "L53" + "line": "L97" + } + ] + }, + "norm_label": ".crawlallasync_multipleactiveconfigs_runspipelineforeachasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", + "source_location": "L88" + }, + { + "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_workertests_crawlallasync_noactiveconfigs_pipelineisnevercalledasync", + "label": ".CrawlAllAsync_NoActiveConfigs_PipelineIsNeverCalledAsync()", + "_callable": true, + "_origin": "ast", + "community": 162, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Crawling", + "scope_chain": [ + "s306" + ], + "unresolved_calls": [ + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L115" + } + ] + }, + "norm_label": ".crawlallasync_noactiveconfigs_pipelineisnevercalledasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", + "source_location": "L106" + }, + { + "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_workertests_crawlallasync_noresolveduserid_callsgetallactiveasync", + "label": ".CrawlAllAsync_NoResolvedUserId_CallsGetAllActiveAsync()", + "_callable": true, + "_origin": "ast", + "community": 162, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Crawling", + "scope_chain": [ + "s306" + ], + "unresolved_calls": [ + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L60" + } + ] + }, + "norm_label": ".crawlallasync_noresolveduserid_callsgetallactiveasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", + "source_location": "L52" + }, + { + "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_workertests_crawlallasync_withresolveduserid_callsgetactivebyuseridasync", + "label": ".CrawlAllAsync_WithResolvedUserId_CallsGetActiveByUserIdAsync()", + "_callable": true, + "_origin": "ast", + "community": 162, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Crawling", + "scope_chain": [ + "s306" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L73" }, { - "callee": "WriteToken", - "receiver_type": "JwtSecurityTokenHandler", + "callee": "Any", + "receiver_type": "Arg", "lang": "csharp", - "line": "L56" + "line": "L80" } ] }, - "norm_label": ".create()", - "source_file": "src/Anichron.API/Security/JwtFactory.cs", - "source_location": "L34" + "norm_label": ".crawlallasync_withresolveduserid_callsgetactivebyuseridasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", + "source_location": "L69" }, { "id": "src_anichron_api_tests_unit_security_jwtfactorytests_anichron_api_tests_unit_security_jwtfactorytests_create_adminuser_includesisadminclaim", @@ -13695,76 +13961,60 @@ "source_location": "L37" }, { - "id": "src_anichron_core_data_repository_mediaassetrepository_anichron_core_data_repository_efmediaassetrepository_add", - "label": ".Add()", - "_callable": true, - "_origin": "ast", - "community": 184, - "community_name": "IMediaAssetRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".add()", - "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", - "source_location": "L18" - }, - { - "id": "src_anichron_core_data_repository_mediaassetrepository_anichron_core_data_repository_efmediaassetrepository_findbyhashasync", - "label": ".FindByHashAsync()", - "_callable": true, - "_origin": "ast", - "community": 184, - "community_name": "IMediaAssetRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".findbyhashasync()", - "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", - "source_location": "L14" - }, - { - "id": "src_anichron_core_data_repository_mediaassetrepository_anichron_core_data_repository_imediaassetrepository_add", - "label": ".Add()", + "id": "src_anichron_api_security_jwtfactory_anichron_api_security_ijwtfactory_create", + "label": ".Create()", "_callable": true, "_origin": "ast", "community": 184, - "community_name": "IMediaAssetRepository", + "community_name": "JwtSettings", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Security", "scope_chain": [ - "s66" + "s220" ] }, - "norm_label": ".add()", - "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", - "source_location": "L9" + "norm_label": ".create()", + "source_file": "src/Anichron.API/Security/JwtFactory.cs", + "source_location": "L13" }, { - "id": "src_anichron_core_data_repository_mediaassetrepository_anichron_core_data_repository_imediaassetrepository_findbyhashasync", - "label": ".FindByHashAsync()", + "id": "src_anichron_api_security_jwtfactory_anichron_api_security_jwtfactory_create", + "label": ".Create()", "_callable": true, "_origin": "ast", "community": 184, - "community_name": "IMediaAssetRepository", + "community_name": "JwtSettings", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Security", "scope_chain": [ - "s66" + "s220" + ], + "unresolved_calls": [ + { + "callee": "Add", + "receiver_type": "List", + "lang": "csharp", + "line": "L44" + }, + { + "callee": "GetCurrentInstant", + "receiver_type": "IClock", + "lang": "csharp", + "line": "L53" + }, + { + "callee": "WriteToken", + "receiver_type": "JwtSecurityTokenHandler", + "lang": "csharp", + "line": "L56" + } ] }, - "norm_label": ".findbyhashasync()", - "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", - "source_location": "L8" + "norm_label": ".create()", + "source_file": "src/Anichron.API/Security/JwtFactory.cs", + "source_location": "L34" }, { "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_adminendpoints_createstorageconfigasync", @@ -13995,8 +14245,8 @@ "source_location": "L41" }, { - "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_authresponsemapper_getadmincreateuserresult", - "label": ".GetAdminCreateUserResult()", + "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmingetuserresult", + "label": ".GetAdminGetUserResult()", "_callable": true, "_origin": "ast", "community": 19, @@ -14006,49 +14256,29 @@ "namespace": "Anichron.API.Endpoints", "scope_chain": [ "s195" - ], - "unresolved_calls": [ - { - "callee": "UnprocessableEntity", - "receiver_type": "Results", - "lang": "csharp", - "line": "L121" - }, - { - "callee": "Conflict", - "receiver_type": "Results", - "lang": "csharp", - "line": "L123" - }, - { - "callee": "Created", - "receiver_type": "Results", - "lang": "csharp", - "line": "L131" - } ] }, - "norm_label": ".getadmincreateuserresult()", + "norm_label": ".getadmingetuserresult()", "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", - "source_location": "L115" + "source_location": "L19" }, { - "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmincreateuserresult", - "label": ".GetAdminCreateUserResult()", + "id": "src_anichron_api_services_adminuserservice_anichron_api_services_iadminuserservice_updateasync", + "label": ".UpdateAsync()", "_callable": true, "_origin": "ast", "community": 19, "community_name": "IAuthResponseMapper", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Endpoints", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s195" + "s92" ] }, - "norm_label": ".getadmincreateuserresult()", - "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", - "source_location": "L16" + "norm_label": ".updateasync()", + "source_file": "src/Anichron.API/Services/AdminUserService.cs", + "source_location": "L11" }, { "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_anichron_api_tests_unit_endpoints_adminendpointstests_createuserasync_callsmapperwithserviceresult", @@ -14692,6 +14922,44 @@ "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", "source_location": "L172" }, + { + "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_authresponsemapper_getadmincreateuserresult", + "label": ".GetAdminCreateUserResult()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "AuthResult", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Endpoints", + "scope_chain": [ + "s195" + ], + "unresolved_calls": [ + { + "callee": "UnprocessableEntity", + "receiver_type": "Results", + "lang": "csharp", + "line": "L121" + }, + { + "callee": "Conflict", + "receiver_type": "Results", + "lang": "csharp", + "line": "L123" + }, + { + "callee": "Created", + "receiver_type": "Results", + "lang": "csharp", + "line": "L131" + } + ] + }, + "norm_label": ".getadmincreateuserresult()", + "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", + "source_location": "L115" + }, { "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_authresponsemapper_getadmindeletestorageconfigresult", "label": ".GetAdminDeleteStorageConfigResult()", @@ -15143,8 +15411,8 @@ "source_location": "L23" }, { - "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmindeletestorageconfigresult", - "label": ".GetAdminDeleteStorageConfigResult()", + "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmincreateuserresult", + "label": ".GetAdminCreateUserResult()", "_callable": true, "_origin": "ast", "community": 2, @@ -15156,13 +15424,13 @@ "s195" ] }, - "norm_label": ".getadmindeletestorageconfigresult()", + "norm_label": ".getadmincreateuserresult()", "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", - "source_location": "L24" + "source_location": "L16" }, { - "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmindeleteuserresult", - "label": ".GetAdminDeleteUserResult()", + "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmindeletestorageconfigresult", + "label": ".GetAdminDeleteStorageConfigResult()", "_callable": true, "_origin": "ast", "community": 2, @@ -15174,13 +15442,13 @@ "s195" ] }, - "norm_label": ".getadmindeleteuserresult()", + "norm_label": ".getadmindeletestorageconfigresult()", "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", - "source_location": "L21" + "source_location": "L24" }, { - "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmingetstorageconfigsresult", - "label": ".GetAdminGetStorageConfigsResult()", + "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmindeleteuserresult", + "label": ".GetAdminDeleteUserResult()", "_callable": true, "_origin": "ast", "community": 2, @@ -15192,13 +15460,13 @@ "s195" ] }, - "norm_label": ".getadmingetstorageconfigsresult()", + "norm_label": ".getadmindeleteuserresult()", "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", - "source_location": "L22" + "source_location": "L21" }, { - "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmingetuserresult", - "label": ".GetAdminGetUserResult()", + "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmingetstorageconfigsresult", + "label": ".GetAdminGetStorageConfigsResult()", "_callable": true, "_origin": "ast", "community": 2, @@ -15210,9 +15478,9 @@ "s195" ] }, - "norm_label": ".getadmingetuserresult()", + "norm_label": ".getadmingetstorageconfigsresult()", "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", - "source_location": "L19" + "source_location": "L22" }, { "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmingetusersresult", @@ -15862,7 +16130,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -15880,7 +16148,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -15898,7 +16166,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -15916,7 +16184,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -15942,7 +16210,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -15968,7 +16236,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -15994,7 +16262,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -16020,7 +16288,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -16046,7 +16314,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -16064,7 +16332,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -16076,49 +16344,13 @@ "source_file": "src/Anichron.API/Services/AuthService.cs", "source_location": "L30" }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_loginasync", - "label": ".LoginAsync()", - "_callable": true, - "_origin": "ast", - "community": 21, - "community_name": "AuthTokens", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ] - }, - "norm_label": ".loginasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L46" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_registerasync", - "label": ".RegisterAsync()", - "_callable": true, - "_origin": "ast", - "community": 21, - "community_name": "AuthTokens", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ] - }, - "norm_label": ".registerasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L45" - }, { "id": "src_anichron_api_tests_unit_endpoints_authendpointstests_anichron_api_tests_unit_endpoints_authendpointstests_loginmobileasync_callsauthservicewithcredentials", "label": ".LoginMobileAsync_CallsAuthServiceWithCredentials()", "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -16150,7 +16382,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -16182,7 +16414,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -16214,7 +16446,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -16246,7 +16478,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -16278,7 +16510,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -16310,7 +16542,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -16342,7 +16574,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -16360,7 +16592,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -16378,7 +16610,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -16410,7 +16642,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -16442,7 +16674,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -16474,7 +16706,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -16512,7 +16744,7 @@ "_callable": true, "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -16551,62 +16783,188 @@ "source_location": "L49" }, { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_anichron_worker_tests_unit_ingestion_proxy_testfixture_build", - "label": ".Build()", + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice_islockedout", + "label": ".IsLockedOut()", "_callable": true, "_origin": "ast", - "community": 22, - "community_name": "WorkerSettings", + "community": 224, + "community_name": "LockoutService", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s144" + "s84" + ] + }, + "norm_label": ".islockedout()", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L9" + }, + { + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice_preparereset", + "label": ".PrepareReset()", + "_callable": true, + "_origin": "ast", + "community": 224, + "community_name": "LockoutService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s84" + ] + }, + "norm_label": ".preparereset()", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L12" + }, + { + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice_recordfailedattemptasync", + "label": ".RecordFailedAttemptAsync()", + "_callable": true, + "_origin": "ast", + "community": 224, + "community_name": "LockoutService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s84" + ] + }, + "norm_label": ".recordfailedattemptasync()", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L10" + }, + { + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_computebackoffseconds", + "label": ".ComputeBackoffSeconds()", + "_callable": true, + "_origin": "ast", + "community": 224, + "community_name": "LockoutService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s84" ], "unresolved_calls": [ { - "callee": "Create", - "receiver_type": "Options", - "lang": "csharp", - "line": "L17" - }, - { - "callee": "For", - "receiver_type": "Substitute", + "callee": "Pow", + "receiver_type": "Math", "lang": "csharp", - "line": "L18" + "line": "L39" } ] }, - "norm_label": ".build()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/FfmpegVideoProcessorTests.cs", - "source_location": "L14" + "norm_label": ".computebackoffseconds()", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L35" }, { - "id": "src_anichron_worker_tests_unit_settings_workersettingsvalidatortests_anichron_worker_tests_unit_settings_workersettingsvalidatortests_getfailures", - "label": ".GetFailures()", + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_islockedout", + "label": ".IsLockedOut()", "_callable": true, "_origin": "ast", - "community": 22, - "community_name": "WorkerSettings", + "community": 224, + "community_name": "LockoutService", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Settings", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s78" + "s84" + ] + }, + "norm_label": ".islockedout()", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L17" + }, + { + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_preparereset", + "label": ".PrepareReset()", + "_callable": true, + "_origin": "ast", + "community": 224, + "community_name": "LockoutService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s84" + ] + }, + "norm_label": ".preparereset()", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L29" + }, + { + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_recordfailedattemptasync", + "label": ".RecordFailedAttemptAsync()", + "_callable": true, + "_origin": "ast", + "community": 224, + "community_name": "LockoutService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s84" ], "unresolved_calls": [ { - "callee": "TryValidateObject", - "receiver_type": "Validator", + "callee": "Plus", + "receiver_type": "Instant", "lang": "csharp", - "line": "L30" + "line": "L25" + }, + { + "callee": "FromSeconds", + "receiver_type": "Duration", + "lang": "csharp", + "line": "L25" } ] }, - "norm_label": ".getfailures()", - "source_file": "src/Anichron.Worker.Tests.Unit/Settings/WorkerSettingsValidatorTests.cs", - "source_location": "L27" + "norm_label": ".recordfailedattemptasync()", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L20" + }, + { + "id": "src_anichron_api_tests_unit_services_lockoutservicetests_anichron_api_tests_unit_services_lockoutservicetests_computebackoffseconds_returnsexpectedseconds", + "label": ".ComputeBackoffSeconds_ReturnsExpectedSeconds()", + "_callable": true, + "_origin": "ast", + "community": 224, + "community_name": "LockoutService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Services", + "scope_chain": [ + "s84" + ] + }, + "norm_label": ".computebackoffseconds_returnsexpectedseconds()", + "source_file": "src/Anichron.API.Tests.Unit/Services/LockoutServiceTests.cs", + "source_location": "L154" + }, + { + "id": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_efuserrepository_add", + "label": ".Add()", + "_callable": true, + "_origin": "ast", + "community": 23, + "community_name": "EfUserRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".add()", + "source_file": "src/Anichron.Core/Data/Repository/UserRepository.cs", + "source_location": "L51" }, { "id": "src_anichron_core_tests_unit_data_repository_userrepositorytests_anichron_core_tests_unit_data_repository_userrepositorytests_add_addsusertocontext", @@ -17125,66 +17483,148 @@ "source_location": "L360" }, { - "id": "src_anichron_worker_ingestion_proxy_processlauncher_anichron_worker_ingestion_proxy_iprocesslauncher_runasync", - "label": ".RunAsync()", + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_deleteexpiredasync", + "label": ".DeleteExpiredAsync()", "_callable": true, "_origin": "ast", "community": 231, - "community_name": ".RunAsync", + "community_name": "RefreshToken", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.Core.Data.Repository", "scope_chain": [ - "s27" + "s66" ] }, - "norm_label": ".runasync()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProcessLauncher.cs", - "source_location": "L7" + "norm_label": ".deleteexpiredasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L31" }, { - "id": "src_anichron_worker_ingestion_proxy_processlauncher_anichron_worker_ingestion_proxy_systemprocesslauncher_runasync", - "label": ".RunAsync()", + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_findbyhashwithuserasync", + "label": ".FindByHashWithUserAsync()", "_callable": true, "_origin": "ast", "community": 231, - "community_name": ".RunAsync", + "community_name": "RefreshToken", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.Core.Data.Repository", "scope_chain": [ - "s27" - ], - "unresolved_calls": [ - { - "callee": "Start", - "receiver_type": "Process", - "lang": "csharp", - "line": "L28" - }, - { - "callee": "WaitForExitAsync", - "receiver_type": "Process", - "lang": "csharp", - "line": "L35" - }, - { - "callee": "Kill", - "receiver_type": "Process", - "lang": "csharp", - "line": "L43" - }, - { - "callee": "WhenAll", - "receiver_type": "Task", - "lang": "csharp", - "line": "L45" - } + "s66" ] }, - "norm_label": ".runasync()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProcessLauncher.cs", - "source_location": "L14" + "norm_label": ".findbyhashwithuserasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L17" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_revokeallactivebyuseridasync", + "label": ".RevokeAllActiveByUserIdAsync()", + "_callable": true, + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".revokeallactivebyuseridasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L26" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_add", + "label": ".Add()", + "_callable": true, + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".add()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L10" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_deleteexpiredasync", + "label": ".DeleteExpiredAsync()", + "_callable": true, + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".deleteexpiredasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L12" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_findbyhashasync", + "label": ".FindByHashAsync()", + "_callable": true, + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".findbyhashasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L9" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_findbyhashwithuserasync", + "label": ".FindByHashWithUserAsync()", + "_callable": true, + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".findbyhashwithuserasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L8" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_revokeallactivebyuseridasync", + "label": ".RevokeAllActiveByUserIdAsync()", + "_callable": true, + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".revokeallactivebyuseridasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L11" }, { "id": "src_anichron_api_infrastructure_mustchangepasswordmiddleware_anichron_api_infrastructure_mustchangepasswordmiddleware_invokeasync", @@ -17474,6 +17914,270 @@ "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/MustChangePasswordMiddlewareTests.cs", "source_location": "L24" }, + { + "id": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice_deleteasync", + "label": ".DeleteAsync()", + "_callable": true, + "_origin": "ast", + "community": 240, + "community_name": ".DeleteAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s92" + ], + "unresolved_calls": [ + { + "callee": "GetCurrentInstant", + "receiver_type": "IClock", + "lang": "csharp", + "line": "L74" + } + ] + }, + "norm_label": ".deleteasync()", + "source_file": "src/Anichron.API/Services/AdminUserService.cs", + "source_location": "L60" + }, + { + "id": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice_getallasync", + "label": ".GetAllAsync()", + "_callable": true, + "_origin": "ast", + "community": 240, + "community_name": ".DeleteAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s92" + ] + }, + "norm_label": ".getallasync()", + "source_file": "src/Anichron.API/Services/AdminUserService.cs", + "source_location": "L21" + }, + { + "id": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice_getbyidasync", + "label": ".GetByIdAsync()", + "_callable": true, + "_origin": "ast", + "community": 240, + "community_name": ".DeleteAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s92" + ] + }, + "norm_label": ".getbyidasync()", + "source_file": "src/Anichron.API/Services/AdminUserService.cs", + "source_location": "L24" + }, + { + "id": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice_updateasync", + "label": ".UpdateAsync()", + "_callable": true, + "_origin": "ast", + "community": 240, + "community_name": ".DeleteAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s92" + ], + "unresolved_calls": [ + { + "callee": "GetCurrentInstant", + "receiver_type": "IClock", + "lang": "csharp", + "line": "L52" + } + ] + }, + "norm_label": ".updateasync()", + "source_file": "src/Anichron.API/Services/AdminUserService.cs", + "source_location": "L27" + }, + { + "id": "src_anichron_api_services_adminuserservice_anichron_api_services_iadminuserservice_deleteasync", + "label": ".DeleteAsync()", + "_callable": true, + "_origin": "ast", + "community": 240, + "community_name": ".DeleteAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s92" + ] + }, + "norm_label": ".deleteasync()", + "source_file": "src/Anichron.API/Services/AdminUserService.cs", + "source_location": "L12" + }, + { + "id": "src_anichron_api_services_adminuserservice_anichron_api_services_iadminuserservice_getallasync", + "label": ".GetAllAsync()", + "_callable": true, + "_origin": "ast", + "community": 240, + "community_name": ".DeleteAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s92" + ] + }, + "norm_label": ".getallasync()", + "source_file": "src/Anichron.API/Services/AdminUserService.cs", + "source_location": "L9" + }, + { + "id": "src_anichron_api_services_adminuserservice_anichron_api_services_iadminuserservice_getbyidasync", + "label": ".GetByIdAsync()", + "_callable": true, + "_origin": "ast", + "community": 240, + "community_name": ".DeleteAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s92" + ] + }, + "norm_label": ".getbyidasync()", + "source_file": "src/Anichron.API/Services/AdminUserService.cs", + "source_location": "L10" + }, + { + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_testfixture_createtestee", + "label": ".CreateTestee()", + "_callable": true, + "_origin": "ast", + "community": 240, + "community_name": ".DeleteAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Services", + "scope_chain": [ + "s160" + ] + }, + "norm_label": ".createtestee()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L59" + }, + { + "id": "src_anichron_worker_ingestion_mediatypedetector_anichron_worker_ingestion_mediatypedetector_detect", + "label": ".Detect()", + "_callable": true, + "_origin": "ast", + "community": 241, + "community_name": "MediaType", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion", + "scope_chain": [ + "s29" + ], + "unresolved_calls": [ + { + "callee": "GetExtension", + "receiver_type": "Path", + "lang": "csharp", + "line": "L30" + }, + { + "callee": "TryGetValue", + "receiver_type": "Dictionary", + "lang": "csharp", + "line": "L31" + } + ] + }, + "norm_label": ".detect()", + "source_file": "src/Anichron.Worker/Ingestion/MediaTypeDetector.cs", + "source_location": "L28" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests_anichron_worker_tests_unit_ingestion_mediatypedetectortests_detect_imageextension_returnsimage", + "label": ".Detect_ImageExtension_ReturnsImage()", + "_callable": true, + "_origin": "ast", + "community": 241, + "community_name": "MediaType", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion", + "scope_chain": [ + "s62" + ] + }, + "norm_label": ".detect_imageextension_returnsimage()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/MediaTypeDetectorTests.cs", + "source_location": "L12" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests_anichron_worker_tests_unit_ingestion_mediatypedetectortests_detect_unknownextension_returnsnull", + "label": ".Detect_UnknownExtension_ReturnsNull()", + "_callable": true, + "_origin": "ast", + "community": 241, + "community_name": "MediaType", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion", + "scope_chain": [ + "s62" + ] + }, + "norm_label": ".detect_unknownextension_returnsnull()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/MediaTypeDetectorTests.cs", + "source_location": "L63" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests_anichron_worker_tests_unit_ingestion_mediatypedetectortests_detect_uppercaseextension_returnscorrecttype", + "label": ".Detect_UppercaseExtension_ReturnsCorrectType()", + "_callable": true, + "_origin": "ast", + "community": 241, + "community_name": "MediaType", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion", + "scope_chain": [ + "s62" + ] + }, + "norm_label": ".detect_uppercaseextension_returnscorrecttype()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/MediaTypeDetectorTests.cs", + "source_location": "L48" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests_anichron_worker_tests_unit_ingestion_mediatypedetectortests_detect_videoextension_returnsvideo", + "label": ".Detect_VideoExtension_ReturnsVideo()", + "_callable": true, + "_origin": "ast", + "community": 241, + "community_name": "MediaType", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion", + "scope_chain": [ + "s62" + ] + }, + "norm_label": ".detect_videoextension_returnsvideo()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/MediaTypeDetectorTests.cs", + "source_location": "L32" + }, { "id": "src_anichron_core_data_repository_inviterepository_anichron_core_data_repository_efinviterepository_add", "label": ".Add()", @@ -17932,58 +18636,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/FileIngestionPipelineTests.cs", "source_location": "L160" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_asset_canbesetandread", - "label": ".Asset_CanBeSetAndRead()", - "_callable": true, - "_origin": "ast", - "community": 25, - "community_name": "SingleFileItem", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", - "scope_chain": [ - "s104" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L27" - } - ] - }, - "norm_label": ".asset_canbesetandread()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionContextTests.cs", - "source_location": "L21" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_proxyfiles_defaultstoemptylist", - "label": ".ProxyFiles_DefaultsToEmptyList()", - "_callable": true, - "_origin": "ast", - "community": 25, - "community_name": "SingleFileItem", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", - "scope_chain": [ - "s104" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L15" - } - ] - }, - "norm_label": ".proxyfiles_defaultstoemptylist()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionContextTests.cs", - "source_location": "L9" - }, { "id": "src_anichron_api_services_adminstorageconfigservice_anichron_api_services_adminstorageconfigservice_addasync", "label": ".AddAsync()", @@ -18118,24 +18770,6 @@ "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", "source_location": "L17" }, - { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_add", - "label": ".Add()", - "_callable": true, - "_origin": "ast", - "community": 254, - "community_name": ".AddAsync", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".add()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L13" - }, { "id": "src_anichron_api_tests_unit_services_lockoutservicetests_anichron_api_tests_unit_services_lockoutservicetests_islockedout_lockeduntilexactlynow_returnsfalse", "label": ".IsLockedOut_LockedUntilExactlyNow_ReturnsFalse()", @@ -18557,362 +19191,102 @@ "source_location": "L14" }, { - "id": "src_anichron_worker_crawling_fileingestionpipeline_anichron_worker_crawling_log_itemfailed", - "label": ".ItemFailed()", - "_callable": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s256" - ] - }, - "norm_label": ".itemfailed()", - "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", - "source_location": "L129" - }, - { - "id": "src_anichron_worker_crawling_fileingestionpipeline_anichron_worker_crawling_log_unsupportedfile", - "label": ".UnsupportedFile()", - "_callable": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s256" - ] - }, - "norm_label": ".unsupportedfile()", - "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", - "source_location": "L126" - }, - { - "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_log_crawlingpath", - "label": ".CrawlingPath()", - "_callable": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s134" - ] - }, - "norm_label": ".crawlingpath()", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L55" - }, - { - "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_log_starting", - "label": ".Starting()", - "_callable": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s134" - ] - }, - "norm_label": ".starting()", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L52" - }, - { - "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker_crawlallasync", - "label": ".CrawlAllAsync()", - "_callable": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s134" - ], - "unresolved_calls": [ - { - "callee": "CreateScope", - "receiver_type": "IServiceScopeFactory", - "lang": "csharp", - "line": "L33" - } - ] - }, - "norm_label": ".crawlallasync()", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L31" - }, - { - "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker_crawlasync", - "label": ".CrawlAsync()", - "_callable": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s134" - ] - }, - "norm_label": ".crawlasync()", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L44" - }, - { - "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker_executeasync", - "label": ".ExecuteAsync()", - "_callable": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s134" - ], - "unresolved_calls": [ - { - "callee": "Delay", - "receiver_type": "Task", - "lang": "csharp", - "line": "L27" - }, - { - "callee": "FromHours", - "receiver_type": "TimeSpan", - "lang": "csharp", - "line": "L27" - } - ] - }, - "norm_label": ".executeasync()", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L17" - }, - { - "id": "src_anichron_worker_ingestion_ingestionshutdown_anichron_worker_ingestion_ingestionshutdown_isinprogress", - "label": ".IsInProgress()", + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_capturinglogger_beginscope", + "label": ".BeginScope()", "_callable": true, "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", + "community": 283, + "community_name": "CapturingLogger", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion", + "namespace": "Anichron.Worker.Tests.Unit.Maintenance", "scope_chain": [ - "s0" + "s241" ] }, - "norm_label": ".isinprogress()", - "source_file": "src/Anichron.Worker/Ingestion/IngestionShutdown.cs", - "source_location": "L9" + "norm_label": ".beginscope()", + "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", + "source_location": "L97" }, { - "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_ilivephotolinker_link", - "label": ".Link()", + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_capturinglogger_isenabled", + "label": ".IsEnabled()", "_callable": true, "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", + "community": 283, + "community_name": "CapturingLogger", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion", + "namespace": "Anichron.Worker.Tests.Unit.Maintenance", "scope_chain": [ - "s59" + "s241" ] }, - "norm_label": ".link()", - "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", - "source_location": "L12" + "norm_label": ".isenabled()", + "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", + "source_location": "L96" }, { - "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_livephotolinker_link", - "label": ".Link()", + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_capturinglogger_log", + "label": ".Log()", "_callable": true, "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", + "community": 283, + "community_name": "CapturingLogger", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion", + "namespace": "Anichron.Worker.Tests.Unit.Maintenance", "scope_chain": [ - "s59" + "s241" ], "unresolved_calls": [ { "callee": "Add", "receiver_type": "List", "lang": "csharp", - "line": "L26" - }, - { - "callee": "Add", - "receiver_type": "HashSet", - "lang": "csharp", - "line": "L36" - }, - { - "callee": "TryGetValue", - "receiver_type": "Dictionary", - "lang": "csharp", - "line": "L40" - } - ] - }, - "norm_label": ".link()", - "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", - "source_location": "L17" - }, - { - "id": "src_anichron_worker_ingestion_mediatypedetector_anichron_worker_ingestion_mediatypedetector_detect", - "label": ".Detect()", - "_callable": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion", - "scope_chain": [ - "s29" - ], - "unresolved_calls": [ - { - "callee": "GetExtension", - "receiver_type": "Path", - "lang": "csharp", - "line": "L30" - }, - { - "callee": "TryGetValue", - "receiver_type": "Dictionary", - "lang": "csharp", - "line": "L31" - } - ] - }, - "norm_label": ".detect()", - "source_file": "src/Anichron.Worker/Ingestion/MediaTypeDetector.cs", - "source_location": "L28" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_testfixture_build", - "label": ".Build()", - "_callable": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Crawling", - "scope_chain": [ - "s306" - ], - "unresolved_calls": [ - { - "callee": "Create", - "receiver_type": "Options", - "lang": "csharp", - "line": "L44" - }, - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L45" + "line": "L94" } ] }, - "norm_label": ".build()", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", - "source_location": "L39" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests_anichron_worker_tests_unit_ingestion_mediatypedetectortests_detect_imageextension_returnsimage", - "label": ".Detect_ImageExtension_ReturnsImage()", - "_callable": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion", - "scope_chain": [ - "s62" - ] - }, - "norm_label": ".detect_imageextension_returnsimage()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/MediaTypeDetectorTests.cs", - "source_location": "L12" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests_anichron_worker_tests_unit_ingestion_mediatypedetectortests_detect_unknownextension_returnsnull", - "label": ".Detect_UnknownExtension_ReturnsNull()", - "_callable": true, - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion", - "scope_chain": [ - "s62" - ] - }, - "norm_label": ".detect_unknownextension_returnsnull()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/MediaTypeDetectorTests.cs", - "source_location": "L63" + "norm_label": ".log()", + "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", + "source_location": "L93" }, { - "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests_anichron_worker_tests_unit_ingestion_mediatypedetectortests_detect_uppercaseextension_returnscorrecttype", - "label": ".Detect_UppercaseExtension_ReturnsCorrectType()", + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware_caninvoke", + "label": ".CanInvoke()", "_callable": true, "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", + "community": 288, + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion", + "namespace": "Anichron.Worker.Ingestion.Pipeline", "scope_chain": [ - "s62" + "s0" ] }, - "norm_label": ".detect_uppercaseextension_returnscorrecttype()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/MediaTypeDetectorTests.cs", - "source_location": "L48" + "norm_label": ".caninvoke()", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", + "source_location": "L8" }, { - "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests_anichron_worker_tests_unit_ingestion_mediatypedetectortests_detect_videoextension_returnsvideo", - "label": ".Detect_VideoExtension_ReturnsVideo()", + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware_invokeasync", + "label": ".InvokeAsync()", "_callable": true, "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", + "community": 288, + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion", + "namespace": "Anichron.Worker.Ingestion.Pipeline", "scope_chain": [ - "s62" + "s0" ] }, - "norm_label": ".detect_videoextension_returnsvideo()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/MediaTypeDetectorTests.cs", - "source_location": "L32" + "norm_label": ".invokeasync()", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", + "source_location": "L9" }, { "id": "src_anichron_worker_ingestion_pipeline_ingestionpipelinerunner_anichron_worker_ingestion_pipeline_iingestionpipelinerunner_runasync", @@ -18920,7 +19294,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -18938,7 +19312,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -18956,7 +19330,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -18974,7 +19348,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -18992,7 +19366,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -19010,7 +19384,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -19028,7 +19402,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -19046,7 +19420,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -19064,7 +19438,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -19082,7 +19456,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -19094,6 +19468,44 @@ "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IngestionPipelineRunner.cs", "source_location": "L137" }, + { + "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_anichron_worker_tests_unit_crawling_testfixture_buildwithmiddlewares", + "label": ".BuildWithMiddlewares()", + "_callable": true, + "_origin": "ast", + "community": 288, + "community_name": "IIngestionMiddleware", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Crawling", + "scope_chain": [ + "s393" + ], + "unresolved_calls": [ + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L52" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L53" + }, + { + "callee": "Create", + "receiver_type": "Options", + "lang": "csharp", + "line": "L59" + } + ] + }, + "norm_label": ".buildwithmiddlewares()", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/FileIngestionPipelineTests.cs", + "source_location": "L48" + }, { "id": "src_anichron_api_tests_unit_services_bootstrapresetservicetests_anichron_api_tests_unit_services_bootstrapresetservicetests_resetifrequestedasync_noresetpasswordconfigured_returnswithoutanydbcalls", "label": ".ResetIfRequestedAsync_NoResetPasswordConfigured_ReturnsWithoutAnyDbCalls()", @@ -19547,22 +19959,168 @@ "source_location": "L42" }, { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_capturinglogger_beginscope", - "label": ".BeginScope()", + "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_ilivephotolinker_link", + "label": ".Link()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "CapturingLogger", + "community": 291, + "community_name": "LivePhotoLinker", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", + "namespace": "Anichron.Worker.Ingestion", "scope_chain": [ - "s185" + "s59" ] }, - "norm_label": ".beginscope()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/LoggingMiddlewareTests.cs", - "source_location": "L119" + "norm_label": ".link()", + "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", + "source_location": "L12" + }, + { + "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_livephotolinker_link", + "label": ".Link()", + "_callable": true, + "_origin": "ast", + "community": 291, + "community_name": "LivePhotoLinker", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion", + "scope_chain": [ + "s59" + ], + "unresolved_calls": [ + { + "callee": "Add", + "receiver_type": "List", + "lang": "csharp", + "line": "L26" + }, + { + "callee": "Add", + "receiver_type": "HashSet", + "lang": "csharp", + "line": "L36" + }, + { + "callee": "TryGetValue", + "receiver_type": "Dictionary", + "lang": "csharp", + "line": "L40" + } + ] + }, + "norm_label": ".link()", + "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", + "source_location": "L17" + }, + { + "id": "src_anichron_core_data_repository_mediaassetrepository_anichron_core_data_repository_efmediaassetrepository_add", + "label": ".Add()", + "_callable": true, + "_origin": "ast", + "community": 296, + "community_name": "IMediaAssetRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".add()", + "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", + "source_location": "L18" + }, + { + "id": "src_anichron_core_data_repository_mediaassetrepository_anichron_core_data_repository_efmediaassetrepository_findbyhashasync", + "label": ".FindByHashAsync()", + "_callable": true, + "_origin": "ast", + "community": 296, + "community_name": "IMediaAssetRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".findbyhashasync()", + "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", + "source_location": "L14" + }, + { + "id": "src_anichron_core_data_repository_mediaassetrepository_anichron_core_data_repository_imediaassetrepository_add", + "label": ".Add()", + "_callable": true, + "_origin": "ast", + "community": 296, + "community_name": "IMediaAssetRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".add()", + "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", + "source_location": "L9" + }, + { + "id": "src_anichron_core_data_repository_mediaassetrepository_anichron_core_data_repository_imediaassetrepository_findbyhashasync", + "label": ".FindByHashAsync()", + "_callable": true, + "_origin": "ast", + "community": 296, + "community_name": "IMediaAssetRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".findbyhashasync()", + "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", + "source_location": "L8" + }, + { + "id": "src_anichron_worker_crawling_fileingestionpipeline_anichron_worker_crawling_log_itemfailed", + "label": ".ItemFailed()", + "_callable": true, + "_origin": "ast", + "community": 298, + "community_name": ".ItemFailed", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Crawling", + "scope_chain": [ + "s256" + ] + }, + "norm_label": ".itemfailed()", + "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", + "source_location": "L129" + }, + { + "id": "src_anichron_worker_crawling_fileingestionpipeline_anichron_worker_crawling_log_unsupportedfile", + "label": ".UnsupportedFile()", + "_callable": true, + "_origin": "ast", + "community": 298, + "community_name": ".ItemFailed", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Crawling", + "scope_chain": [ + "s256" + ] + }, + "norm_label": ".unsupportedfile()", + "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", + "source_location": "L126" }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_capturinglogger_isenabled", @@ -19570,7 +20128,7 @@ "_callable": true, "_origin": "ast", "community": 299, - "community_name": "CapturingLogger", + "community_name": ".Log", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", @@ -19588,7 +20146,7 @@ "_callable": true, "_origin": "ast", "community": 299, - "community_name": "CapturingLogger", + "community_name": ".Log", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", @@ -19940,6 +20498,24 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", "source_location": "L204" }, + { + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxydirectorycreatingmiddleware_caninvoke", + "label": ".CanInvoke()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "IngestionPipelineRunnerTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", + "scope_chain": [ + "s368" + ] + }, + "norm_label": ".caninvoke()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", + "source_location": "L330" + }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_testfixture_build", "label": ".Build()", @@ -19973,298 +20549,22 @@ "source_location": "L27" }, { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_addasync_pathalreadyassigned_returnspathalreadyassigned", - "label": ".AddAsync_PathAlreadyAssigned_ReturnsPathAlreadyAssigned()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L94" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L95" - } - ] - }, - "norm_label": ".addasync_pathalreadyassigned_returnspathalreadyassigned()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L90" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_addasync_usernotfound_returnsusernotfound", - "label": ".AddAsync_UserNotFound_ReturnsUserNotFound()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L79" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L80" - } - ] - }, - "norm_label": ".addasync_usernotfound_returnsusernotfound()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L75" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_addasync_validinput_addsconfigandsaves", - "label": ".AddAsync_ValidInput_AddsConfigAndSaves()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L111" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L113" - }, - { - "callee": "Is", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L125" - } - ] - }, - "norm_label": ".addasync_validinput_addsconfigandsaves()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L107" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_addasync_whitespacerootpath_returnspathinvalid", - "label": ".AddAsync_WhitespaceRootPath_ReturnsPathInvalid()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L67" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L71" - } - ] - }, - "norm_label": ".addasync_whitespacerootpath_returnspathinvalid()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L60" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_deleteasync_configbelongstodifferentuser_returnsstorageconfignotfound", - "label": ".DeleteAsync_ConfigBelongsToDifferentUser_ReturnsStorageConfigNotFound()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L153" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L156" - } - ] - }, - "norm_label": ".deleteasync_configbelongstodifferentuser_returnsstorageconfignotfound()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L149" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_deleteasync_confignotfound_returnsstorageconfignotfound", - "label": ".DeleteAsync_ConfigNotFound_ReturnsStorageConfigNotFound()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L137" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L139" - } - ] - }, - "norm_label": ".deleteasync_confignotfound_returnsstorageconfignotfound()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L133" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_deleteasync_validinput_removesconfigandsaves", - "label": ".DeleteAsync_ValidInput_RemovesConfigAndSaves()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L170" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L173" - } - ] - }, - "norm_label": ".deleteasync_validinput_removesconfigandsaves()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L166" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_getbyuseridasync_userexists_returnsconfigs", - "label": ".GetByUserIdAsync_UserExists_ReturnsConfigs()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L42" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L43" - } - ] - }, - "norm_label": ".getbyuseridasync_userexists_returnsconfigs()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L38" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_getbyuseridasync_usernotfound_returnsusernotfound", - "label": ".GetByUserIdAsync_UserNotFound_ReturnsUserNotFound()", + "id": "src_anichron_worker_ingestion_ingestionshutdown_anichron_worker_ingestion_ingestionshutdown_isinprogress", + "label": ".IsInProgress()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 300, + "community_name": ".IsInProgress", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", + "namespace": "Anichron.Worker.Ingestion", "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L28" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L29" - } + "s0" ] }, - "norm_label": ".getbyuseridasync_usernotfound_returnsusernotfound()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L24" + "norm_label": ".isinprogress()", + "source_file": "src/Anichron.Worker/Ingestion/IngestionShutdown.cs", + "source_location": "L9" }, { "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_add", @@ -20302,24 +20602,6 @@ "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", "source_location": "L19" }, - { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_findbyrootpathasync", - "label": ".FindByRootPathAsync()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".findbyrootpathasync()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L22" - }, { "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_getactivebyuseridasync", "label": ".GetActiveByUserIdAsync()", @@ -20392,6 +20674,24 @@ "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", "source_location": "L37" }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_add", + "label": ".Add()", + "_callable": true, + "_origin": "ast", + "community": 31, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".add()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L13" + }, { "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_findbyidasync", "label": ".FindByIdAsync()", @@ -20501,1022 +20801,662 @@ "source_location": "L14" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_add_config_appearsinsubsequentquery", - "label": ".Add_Config_AppearsInSubsequentQuery()", + "id": "src_anichron_worker_ingestion_middlewares_loggingmiddleware_anichron_worker_ingestion_middlewares_log_itemcompleted", + "label": ".ItemCompleted()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 313, + "community_name": "Log", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L156" - } + "s43" ] }, - "norm_label": ".add_config_appearsinsubsequentquery()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L150" + "norm_label": ".itemcompleted()", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/LoggingMiddleware.cs", + "source_location": "L22" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_createdb", - "label": ".CreateDb()", + "id": "src_anichron_worker_ingestion_middlewares_loggingmiddleware_anichron_worker_ingestion_middlewares_log_itemstarted", + "label": ".ItemStarted()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 313, + "community_name": "Log", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L13" - } + "s43" ] }, - "norm_label": ".createdb()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L10" + "norm_label": ".itemstarted()", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/LoggingMiddleware.cs", + "source_location": "L19" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyidasync_matchingid_returnsconfig", - "label": ".FindByIdAsync_MatchingId_ReturnsConfig()", + "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_anichron_worker_ingestion_middlewares_imageproxymiddleware_caninvoke", + "label": ".CanInvoke()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 319, + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L175" - } + "s209" ] }, - "norm_label": ".findbyidasync_matchingid_returnsconfig()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L170" + "norm_label": ".caninvoke()", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ImageProxyMiddleware.cs", + "source_location": "L18" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyidasync_nomatch_returnsnull", - "label": ".FindByIdAsync_NoMatch_ReturnsNull()", + "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_anichron_worker_ingestion_middlewares_imageproxymiddleware_invokeasync", + "label": ".InvokeAsync()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 319, + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ - "s129" + "s209" ], "unresolved_calls": [ { - "callee": "NewGuid", - "receiver_type": "Guid", + "callee": "Select", + "receiver_type": "IEnumerable", "lang": "csharp", - "line": "L191" + "line": "L30" + }, + { + "callee": "WhenAll", + "receiver_type": "Task", + "lang": "csharp", + "line": "L31" } ] }, - "norm_label": ".findbyidasync_nomatch_returnsnull()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L186" + "norm_label": ".invokeasync()", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ImageProxyMiddleware.cs", + "source_location": "L21" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyrootpathasync_matchingrootpath_returnsconfig", - "label": ".FindByRootPathAsync_MatchingRootPath_ReturnsConfig()", + "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_anichron_worker_ingestion_middlewares_log_proxiesgenerated", + "label": ".ProxiesGenerated()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 319, + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L32" - } + "s209" ] }, - "norm_label": ".findbyrootpathasync_matchingrootpath_returnsconfig()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L25" + "norm_label": ".proxiesgenerated()", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ImageProxyMiddleware.cs", + "source_location": "L56" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyrootpathasync_nomatch_returnsnull", - "label": ".FindByRootPathAsync_NoMatch_ReturnsNull()", + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_videoproxymiddleware_invokeasync", + "label": ".InvokeAsync()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 319, + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ - "s129" + "s110" ], "unresolved_calls": [ { - "callee": "NewGuid", - "receiver_type": "Guid", + "callee": "ToArray", + "receiver_type": "IEnumerable", "lang": "csharp", - "line": "L48" + "line": "L23" } ] }, - "norm_label": ".findbyrootpathasync_nomatch_returnsnull()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L43" + "norm_label": ".invokeasync()", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", + "source_location": "L17" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyrootpathasync_partialpath_returnsnull", - "label": ".FindByRootPathAsync_PartialPath_ReturnsNull()", + "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_anichron_worker_ingestion_proxy_iproxydirectorystrategy_getdirectory", + "label": ".GetDirectory()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 319, + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L62" - } + "s0" ] }, - "norm_label": ".findbyrootpathasync_partialpath_returnsnull()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L57" + "norm_label": ".getdirectory()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", + "source_location": "L5" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getactivebyuseridasync_inactiveconfigforuser_excluded", - "label": ".GetActiveByUserIdAsync_InactiveConfigForUser_Excluded()", + "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_anichron_worker_ingestion_proxy_twolevelhexshardstrategy_getdirectory", + "label": ".GetDirectory()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 319, + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L136" - } + "s0" ] }, - "norm_label": ".getactivebyuseridasync_inactiveconfigforuser_excluded()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L131" + "norm_label": ".getdirectory()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", + "source_location": "L16" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getactivebyuseridasync_matchinguserid_returnsonlythatusersconfigs", - "label": ".GetActiveByUserIdAsync_MatchingUserId_ReturnsOnlyThatUsersConfigs()", + "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_differentconfigssamehash_producedifferentdirectories", + "label": ".GetDirectory_DifferentConfigsSameHash_ProduceDifferentDirectories()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 319, + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", "scope_chain": [ - "s129" + "s40" ], "unresolved_calls": [ { - "callee": "NewGuid", + "callee": "Parse", "receiver_type": "Guid", "lang": "csharp", - "line": "L117" + "line": "L49" } ] }, - "norm_label": ".getactivebyuseridasync_matchinguserid_returnsonlythatusersconfigs()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L112" + "norm_label": ".getdirectory_differentconfigssamehash_producedifferentdirectories()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", + "source_location": "L44" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getallactiveasync_mixedactive_returnsonlyactive", - "label": ".GetAllActiveAsync_MixedActive_ReturnsOnlyActive()", + "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_differenthashsameconfig_bucketfollowsthecontenthash", + "label": ".GetDirectory_DifferentHashSameConfig_BucketFollowsTheContentHash()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 319, + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", "scope_chain": [ - "s129" + "s40" ], "unresolved_calls": [ { - "callee": "NewGuid", + "callee": "Parse", "receiver_type": "Guid", "lang": "csharp", - "line": "L80" + "line": "L24" } ] }, - "norm_label": ".getallactiveasync_mixedactive_returnsonlyactive()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L75" + "norm_label": ".getdirectory_differenthashsameconfig_bucketfollowsthecontenthash()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", + "source_location": "L21" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getallactiveasync_noneactive_returnsempty", - "label": ".GetAllActiveAsync_NoneActive_ReturnsEmpty()", + "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_knownconfigandhash_producesliteraltwolevelpath", + "label": ".GetDirectory_KnownConfigAndHash_ProducesLiteralTwoLevelPath()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 319, + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", "scope_chain": [ - "s129" + "s40" ], "unresolved_calls": [ { - "callee": "NewGuid", + "callee": "Parse", "receiver_type": "Guid", "lang": "csharp", - "line": "L99" + "line": "L14" } ] }, - "norm_label": ".getallactiveasync_noneactive_returnsempty()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L94" + "norm_label": ".getdirectory_knownconfigandhash_producesliteraltwolevelpath()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", + "source_location": "L11" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getbyuseridasync_noconfigs_returnsempty", - "label": ".GetByUserIdAsync_NoConfigs_ReturnsEmpty()", + "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_sameconfigandhash_isstableacrosscalls", + "label": ".GetDirectory_SameConfigAndHash_IsStableAcrossCalls()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 319, + "community_name": "ImageProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", "scope_chain": [ - "s129" + "s40" ], "unresolved_calls": [ { - "callee": "NewGuid", + "callee": "Parse", "receiver_type": "Guid", "lang": "csharp", - "line": "L232" + "line": "L35" } ] }, - "norm_label": ".getbyuseridasync_noconfigs_returnsempty()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L225" + "norm_label": ".getdirectory_sameconfigandhash_isstableacrosscalls()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", + "source_location": "L31" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getbyuseridasync_returnsallconfigsforuser_includinginactive", - "label": ".GetByUserIdAsync_ReturnsAllConfigsForUser_IncludingInactive()", + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_selfdeletion_returnscannotmodifyself", + "label": ".DeleteAsync_SelfDeletion_ReturnsCannotModifySelf()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 32, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s129" + "s160" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L209" + "line": "L220" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L227" } ] }, - "norm_label": ".getbyuseridasync_returnsallconfigsforuser_includinginactive()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L204" + "norm_label": ".deleteasync_selfdeletion_returnscannotmodifyself()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L217" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_makeconfig", - "label": ".MakeConfig()", + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_usernotfound_returnsusernotfound", + "label": ".DeleteAsync_UserNotFound_ReturnsUserNotFound()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 32, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s129" + "s160" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L19" + "line": "L235" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L236" } ] }, - "norm_label": ".makeconfig()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L18" + "norm_label": ".deleteasync_usernotfound_returnsusernotfound()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L231" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_remove_config_disappearsfromsubsequentquery", - "label": ".Remove_Config_DisappearsFromSubsequentQuery()", + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_validuser_revokessessionsremovesuserandsaves", + "label": ".DeleteAsync_ValidUser_RevokesSessionsRemovesUserAndSaves()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 32, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s129" + "s160" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L246" + "line": "L251" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L252" } ] }, - "norm_label": ".remove_config_disappearsfromsubsequentquery()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L241" + "norm_label": ".deleteasync_validuser_revokessessionsremovesuserandsaves()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L247" }, { - "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_workertests_crawlallasync_activeconfig_runspipelinewithcorrectconfigasync", - "label": ".CrawlAllAsync_ActiveConfig_RunsPipelineWithCorrectConfigAsync()", + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_getallasync_returnsallusersfromrepository", + "label": ".GetAllAsync_ReturnsAllUsersFromRepository()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 32, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Crawling", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s306" + "s160" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L122" + "line": "L70" }, { "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L123" + "line": "L71" } ] }, - "norm_label": ".crawlallasync_activeconfig_runspipelinewithcorrectconfigasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", - "source_location": "L118" + "norm_label": ".getallasync_returnsallusersfromrepository()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L66" }, { - "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_workertests_crawlallasync_multipleactiveconfigs_runspipelineforeachasync", - "label": ".CrawlAllAsync_MultipleActiveConfigs_RunsPipelineForEachAsync()", + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_getbyidasync_userfound_returnsuser", + "label": ".GetByIdAsync_UserFound_ReturnsUser()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 32, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Crawling", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s306" + "s160" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L94" + "line": "L86" }, { "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L97" + "line": "L88" } ] }, - "norm_label": ".crawlallasync_multipleactiveconfigs_runspipelineforeachasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", - "source_location": "L88" + "norm_label": ".getbyidasync_userfound_returnsuser()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L82" }, { - "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_workertests_crawlallasync_noactiveconfigs_pipelineisnevercalledasync", - "label": ".CrawlAllAsync_NoActiveConfigs_PipelineIsNeverCalledAsync()", + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_getbyidasync_usernotfound_returnsnull", + "label": ".GetByIdAsync_UserNotFound_ReturnsNull()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 32, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Crawling", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s306" + "s160" ], "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L99" + }, { "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L115" + "line": "L100" } ] }, - "norm_label": ".crawlallasync_noactiveconfigs_pipelineisnevercalledasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", - "source_location": "L106" + "norm_label": ".getbyidasync_usernotfound_returnsnull()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L95" }, { - "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_workertests_crawlallasync_noresolveduserid_callsgetallactiveasync", - "label": ".CrawlAllAsync_NoResolvedUserId_CallsGetAllActiveAsync()", + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_bothparamsnull_returnsuserwithoutsaving", + "label": ".UpdateAsync_BothParamsNull_ReturnsUserWithoutSaving()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 32, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Crawling", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s306" + "s160" ], "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L115" + }, { "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L60" + "line": "L116" } ] }, - "norm_label": ".crawlallasync_noresolveduserid_callsgetallactiveasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", - "source_location": "L52" + "norm_label": ".updateasync_bothparamsnull_returnsuserwithoutsaving()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L111" }, { - "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_workertests_crawlallasync_withresolveduserid_callsgetactivebyuseridasync", - "label": ".CrawlAllAsync_WithResolvedUserId_CallsGetActiveByUserIdAsync()", + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_savethrows_therevocationraninsidethefailedtransaction", + "label": ".UpdateAsync_SaveThrows_TheRevocationRanInsideTheFailedTransaction()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 32, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Crawling", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s306" + "s160" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L73" + "line": "L278" }, { "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L80" + "line": "L279" } ] }, - "norm_label": ".crawlallasync_withresolveduserid_callsgetactivebyuseridasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", - "source_location": "L69" + "norm_label": ".updateasync_savethrows_therevocationraninsidethefailedtransaction()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L274" }, { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_build", - "label": ".Build()", + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_selfmodification_returnscannotmodifyself", + "label": ".UpdateAsync_SelfModification_ReturnsCannotModifySelf()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 32, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Startup", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s307" + "s160" ], "unresolved_calls": [ { - "callee": "Create", - "receiver_type": "Options", + "callee": "NewGuid", + "receiver_type": "Guid", "lang": "csharp", - "line": "L40" + "line": "L130" }, { - "callee": "For", - "receiver_type": "Substitute", + "callee": "Any", + "receiver_type": "Arg", "lang": "csharp", - "line": "L43" + "line": "L137" } ] }, - "norm_label": ".build()", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L38" + "norm_label": ".updateasync_selfmodification_returnscannotmodifyself()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L127" }, { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_startasync_credentialnormalized_trimsandlowercasesasync", - "label": ".StartAsync_CredentialNormalized_TrimsAndLowercasesAsync()", + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisadmin_updatesuserandreturnsupdateduser", + "label": ".UpdateAsync_SetIsAdmin_UpdatesUserAndReturnsUpdatedUser()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 32, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Startup", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s307" + "s160" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L105" + "line": "L159" }, { "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L106" + "line": "L160" } ] }, - "norm_label": ".startasync_credentialnormalized_trimsandlowercasesasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L100" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_startasync_existingconfigdifferentuser_throwsinvalidoperationexceptionwithrootpathinmessageasync", - "label": ".StartAsync_ExistingConfigDifferentUser_ThrowsInvalidOperationExceptionWithRootPathInMessageAsync()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Startup", - "scope_chain": [ - "s307" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L150" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L152" - } - ] - }, - "norm_label": ".startasync_existingconfigdifferentuser_throwsinvalidoperationexceptionwithrootpathinmessageasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L145" + "norm_label": ".updateasync_setisadmin_updatesuserandreturnsupdateduser()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L155" }, { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_startasync_existingconfigsameuser_skipssaveandsetsresolveduseridasync", - "label": ".StartAsync_ExistingConfigSameUser_SkipsSaveAndSetsResolvedUserIdAsync()", + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledfalse_doesnotrevokesessionsbutsaves", + "label": ".UpdateAsync_SetIsDisabledFalse_DoesNotRevokeSessionsButSaves()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 32, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Startup", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s307" + "s160" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L128" + "line": "L204" }, { "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L130" + "line": "L205" } ] }, - "norm_label": ".startasync_existingconfigsameuser_skipssaveandsetsresolveduseridasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L123" + "norm_label": ".updateasync_setisdisabledfalse_doesnotrevokesessionsbutsaves()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L200" }, { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_startasync_noexistingconfig_createsstorageconfigwithcorrectfieldsandsetsresolveduseridasync", - "label": ".StartAsync_NoExistingConfig_CreatesStorageConfigWithCorrectFieldsAndSetsResolvedUserIdAsync()", + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledtrue_revokessessionsandsaves", + "label": ".UpdateAsync_SetIsDisabledTrue_RevokesSessionsAndSaves()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 32, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Startup", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s307" + "s160" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L171" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L172" - }, - { - "callee": "Is", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L180" - } - ] - }, - "norm_label": ".startasync_noexistingconfig_createsstorageconfigwithcorrectfieldsandsetsresolveduseridasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L166" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_startasync_unknownuser_throwsinvalidoperationexceptionwithuserinmessageasync", - "label": ".StartAsync_UnknownUser_ThrowsInvalidOperationExceptionWithUserInMessageAsync()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Startup", - "scope_chain": [ - "s307" - ], - "unresolved_calls": [ - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L86" - } - ] - }, - "norm_label": ".startasync_unknownuser_throwsinvalidoperationexceptionwithuserinmessageasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L81" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_startasync_userisempty_logsallusermodeandmakesnodbcallsasync", - "label": ".StartAsync_UserIsEmpty_LogsAllUserModeAndMakesNoDbCallsAsync()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Startup", - "scope_chain": [ - "s307" - ], - "unresolved_calls": [ - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L59" - } - ] - }, - "norm_label": ".startasync_userisempty_logsallusermodeandmakesnodbcallsasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L50" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_startasync_useriswhitespace_logsallusermodeandmakesnodbcallsasync", - "label": ".StartAsync_UserIsWhitespace_LogsAllUserModeAndMakesNoDbCallsAsync()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Startup", - "scope_chain": [ - "s307" - ], - "unresolved_calls": [ - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L73" - } - ] - }, - "norm_label": ".startasync_useriswhitespace_logsallusermodeandmakesnodbcallsasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L64" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_stopasync_alwayscompletessuccessfullyasync", - "label": ".StopAsync_AlwaysCompletesSuccessfullyAsync()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Startup", - "scope_chain": [ - "s307" - ] - }, - "norm_label": ".stopasync_alwayscompletessuccessfullyasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L192" - }, - { - "id": "src_anichron_worker_ingestion_middlewares_loggingmiddleware_anichron_worker_ingestion_middlewares_log_itemcompleted", - "label": ".ItemCompleted()", - "_callable": true, - "_origin": "ast", - "community": 313, - "community_name": "Log", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Middlewares", - "scope_chain": [ - "s43" - ] - }, - "norm_label": ".itemcompleted()", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/LoggingMiddleware.cs", - "source_location": "L22" - }, - { - "id": "src_anichron_worker_ingestion_middlewares_loggingmiddleware_anichron_worker_ingestion_middlewares_log_itemstarted", - "label": ".ItemStarted()", - "_callable": true, - "_origin": "ast", - "community": 313, - "community_name": "Log", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Middlewares", - "scope_chain": [ - "s43" - ] - }, - "norm_label": ".itemstarted()", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/LoggingMiddleware.cs", - "source_location": "L19" - }, - { - "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_anichron_worker_ingestion_proxy_iproxydirectorystrategy_getdirectory", - "label": ".GetDirectory()", - "_callable": true, - "_origin": "ast", - "community": 319, - "community_name": ".BuildWithMiddlewares", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s0" - ] - }, - "norm_label": ".getdirectory()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", - "source_location": "L5" - }, - { - "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_anichron_worker_ingestion_proxy_twolevelhexshardstrategy_getdirectory", - "label": ".GetDirectory()", - "_callable": true, - "_origin": "ast", - "community": 319, - "community_name": ".BuildWithMiddlewares", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s0" - ] - }, - "norm_label": ".getdirectory()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", - "source_location": "L16" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_anichron_worker_tests_unit_crawling_testfixture_buildwithmiddlewares", - "label": ".BuildWithMiddlewares()", - "_callable": true, - "_origin": "ast", - "community": 319, - "community_name": ".BuildWithMiddlewares", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Crawling", - "scope_chain": [ - "s393" - ], - "unresolved_calls": [ - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L52" + "line": "L173" }, { "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L53" - }, - { - "callee": "Create", - "receiver_type": "Options", - "lang": "csharp", - "line": "L59" - } - ] - }, - "norm_label": ".buildwithmiddlewares()", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/FileIngestionPipelineTests.cs", - "source_location": "L48" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_differentconfigssamehash_producedifferentdirectories", - "label": ".GetDirectory_DifferentConfigsSameHash_ProduceDifferentDirectories()", - "_callable": true, - "_origin": "ast", - "community": 319, - "community_name": ".BuildWithMiddlewares", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s40" - ], - "unresolved_calls": [ - { - "callee": "Parse", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L49" - } - ] - }, - "norm_label": ".getdirectory_differentconfigssamehash_producedifferentdirectories()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", - "source_location": "L44" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_differenthashsameconfig_bucketfollowsthecontenthash", - "label": ".GetDirectory_DifferentHashSameConfig_BucketFollowsTheContentHash()", - "_callable": true, - "_origin": "ast", - "community": 319, - "community_name": ".BuildWithMiddlewares", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s40" - ], - "unresolved_calls": [ - { - "callee": "Parse", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L24" - } - ] - }, - "norm_label": ".getdirectory_differenthashsameconfig_bucketfollowsthecontenthash()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", - "source_location": "L21" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_knownconfigandhash_producesliteraltwolevelpath", - "label": ".GetDirectory_KnownConfigAndHash_ProducesLiteralTwoLevelPath()", - "_callable": true, - "_origin": "ast", - "community": 319, - "community_name": ".BuildWithMiddlewares", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s40" - ], - "unresolved_calls": [ - { - "callee": "Parse", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L14" - } - ] - }, - "norm_label": ".getdirectory_knownconfigandhash_producesliteraltwolevelpath()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", - "source_location": "L11" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_sameconfigandhash_isstableacrosscalls", - "label": ".GetDirectory_SameConfigAndHash_IsStableAcrossCalls()", - "_callable": true, - "_origin": "ast", - "community": 319, - "community_name": ".BuildWithMiddlewares", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s40" - ], - "unresolved_calls": [ - { - "callee": "Parse", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L35" + "line": "L174" } ] }, - "norm_label": ".getdirectory_sameconfigandhash_isstableacrosscalls()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", - "source_location": "L31" + "norm_label": ".updateasync_setisdisabledtrue_revokessessionsandsaves()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L169" }, { - "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_selfdeletion_returnscannotmodifyself", - "label": ".DeleteAsync_SelfDeletion_ReturnsCannotModifySelf()", + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledtrue_whenalreadydisabled_doesnotrevokesessionsbutsaves", + "label": ".UpdateAsync_SetIsDisabledTrue_WhenAlreadyDisabled_DoesNotRevokeSessionsButSaves()", "_callable": true, "_origin": "ast", "community": 32, @@ -21525,30 +21465,30 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s121" + "s160" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L174" + "line": "L191" }, { "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L181" + "line": "L192" } ] }, - "norm_label": ".deleteasync_selfdeletion_returnscannotmodifyself()", + "norm_label": ".updateasync_setisdisabledtrue_whenalreadydisabled_doesnotrevokesessionsbutsaves()", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L171" + "source_location": "L187" }, { - "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_usernotfound_returnsusernotfound", - "label": ".DeleteAsync_UserNotFound_ReturnsUserNotFound()", + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_usernotfound_returnsusernotfound", + "label": ".UpdateAsync_UserNotFound_ReturnsUserNotFound()", "_callable": true, "_origin": "ast", "community": 32, @@ -21557,440 +21497,308 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s121" + "s160" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L189" + "line": "L144" }, { "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L190" + "line": "L145" } ] }, - "norm_label": ".deleteasync_usernotfound_returnsusernotfound()", + "norm_label": ".updateasync_usernotfound_returnsusernotfound()", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L185" + "source_location": "L140" }, { - "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_validuser_revokessessionsremovesuserandsaves", - "label": ".DeleteAsync_ValidUser_RevokesSessionsRemovesUserAndSaves()", + "id": "src_anichron_api_infrastructure_authmessages_anichron_api_infrastructure_authmessages_accounttemporarilylocked", + "label": ".AccountTemporarilyLocked()", "_callable": true, "_origin": "ast", - "community": 32, - "community_name": "TestFixture", + "community": 33, + "community_name": "Anichron.API.Settings", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", + "namespace": "Anichron.API.Infrastructure", "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L204" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L205" - } + "s0" ] }, - "norm_label": ".deleteasync_validuser_revokessessionsremovesuserandsaves()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L200" + "norm_label": ".accounttemporarilylocked()", + "source_file": "src/Anichron.API/Infrastructure/AuthMessages.cs", + "source_location": "L14" }, { - "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_getallasync_returnsallusersfromrepository", - "label": ".GetAllAsync_ReturnsAllUsersFromRepository()", + "id": "src_anichron_worker_ingestion_proxy_processlauncher_anichron_worker_ingestion_proxy_iprocesslauncher_runasync", + "label": ".RunAsync()", "_callable": true, "_origin": "ast", - "community": 32, - "community_name": "TestFixture", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L32" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L33" - } + "s27" ] }, - "norm_label": ".getallasync_returnsallusersfromrepository()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L28" + "norm_label": ".runasync()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProcessLauncher.cs", + "source_location": "L7" }, { - "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_getbyidasync_userfound_returnsuser", - "label": ".GetByIdAsync_UserFound_ReturnsUser()", + "id": "src_anichron_worker_ingestion_proxy_processlauncher_anichron_worker_ingestion_proxy_systemprocesslauncher_runasync", + "label": ".RunAsync()", "_callable": true, "_origin": "ast", - "community": 32, - "community_name": "TestFixture", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s121" + "s27" ], "unresolved_calls": [ { - "callee": "NewGuid", - "receiver_type": "Guid", + "callee": "Start", + "receiver_type": "Process", "lang": "csharp", - "line": "L48" + "line": "L28" }, { - "callee": "Any", - "receiver_type": "Arg", + "callee": "WaitForExitAsync", + "receiver_type": "Process", "lang": "csharp", - "line": "L50" - } - ] - }, - "norm_label": ".getbyidasync_userfound_returnsuser()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L44" - }, - { - "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_getbyidasync_usernotfound_returnsnull", - "label": ".GetByIdAsync_UserNotFound_ReturnsNull()", - "_callable": true, - "_origin": "ast", - "community": 32, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s121" - ], - "unresolved_calls": [ + "line": "L35" + }, { - "callee": "NewGuid", - "receiver_type": "Guid", + "callee": "Kill", + "receiver_type": "Process", "lang": "csharp", - "line": "L61" + "line": "L43" }, { - "callee": "Any", - "receiver_type": "Arg", + "callee": "WhenAll", + "receiver_type": "Task", "lang": "csharp", - "line": "L62" + "line": "L45" } ] }, - "norm_label": ".getbyidasync_usernotfound_returnsnull()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L57" + "norm_label": ".runasync()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProcessLauncher.cs", + "source_location": "L14" }, { - "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_bothparamsnull_returnsuserwithoutsaving", - "label": ".UpdateAsync_BothParamsNull_ReturnsUserWithoutSaving()", + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegvideoprocessor_detectencoderasync", + "label": ".DetectEncoderAsync()", "_callable": true, "_origin": "ast", - "community": 32, - "community_name": "TestFixture", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L77" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L78" - } + "s69" ] }, - "norm_label": ".updateasync_bothparamsnull_returnsuserwithoutsaving()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L73" + "norm_label": ".detectencoderasync()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L44" }, { - "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_selfmodification_returnscannotmodifyself", - "label": ".UpdateAsync_SelfModification_ReturnsCannotModifySelf()", + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegvideoprocessor_dispose", + "label": ".Dispose()", "_callable": true, "_origin": "ast", - "community": 32, - "community_name": "TestFixture", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s121" + "s69" ], "unresolved_calls": [ { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L90" - }, - { - "callee": "Any", - "receiver_type": "Arg", + "callee": "Dispose", + "receiver_type": "SemaphoreSlim", "lang": "csharp", - "line": "L97" + "line": "L102" } ] }, - "norm_label": ".updateasync_selfmodification_returnscannotmodifyself()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L87" + "norm_label": ".dispose()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L102" }, { - "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisadmin_updatesuserandreturnsupdateduser", - "label": ".UpdateAsync_SetIsAdmin_UpdatesUserAndReturnsUpdatedUser()", + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegvideoprocessor_probeencoderasync", + "label": ".ProbeEncoderAsync()", "_callable": true, "_origin": "ast", - "community": 32, - "community_name": "TestFixture", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L118" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L119" - } + "s69" ] }, - "norm_label": ".updateasync_setisadmin_updatesuserandreturnsupdateduser()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L114" + "norm_label": ".probeencoderasync()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L61" }, { - "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledfalse_doesnotrevokesessionsbutsaves", - "label": ".UpdateAsync_SetIsDisabledFalse_DoesNotRevokeSessionsButSaves()", + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegvideoprocessor_runffmpegasync", + "label": ".RunFfmpegAsync()", "_callable": true, "_origin": "ast", - "community": 32, - "community_name": "TestFixture", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L158" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L159" - } + "s69" ] }, - "norm_label": ".updateasync_setisdisabledfalse_doesnotrevokesessionsbutsaves()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L154" + "norm_label": ".runffmpegasync()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L78" }, { - "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledtrue_revokessessionsandsaves", - "label": ".UpdateAsync_SetIsDisabledTrue_RevokesSessionsAndSaves()", + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegvideoprocessor_transcodeasync", + "label": ".TranscodeAsync()", "_callable": true, "_origin": "ast", - "community": 32, - "community_name": "TestFixture", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s121" + "s69" ], "unresolved_calls": [ { - "callee": "NewGuid", - "receiver_type": "Guid", + "callee": "WaitAsync", + "receiver_type": "SemaphoreSlim", "lang": "csharp", - "line": "L132" + "line": "L30" }, { - "callee": "Any", - "receiver_type": "Arg", + "callee": "Release", + "receiver_type": "SemaphoreSlim", "lang": "csharp", - "line": "L133" + "line": "L38" } ] }, - "norm_label": ".updateasync_setisdisabledtrue_revokessessionsandsaves()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L128" + "norm_label": ".transcodeasync()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L27" }, { - "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledtrue_whenalreadydisabled_doesnotrevokesessionsbutsaves", - "label": ".UpdateAsync_SetIsDisabledTrue_WhenAlreadyDisabled_DoesNotRevokeSessionsButSaves()", + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ivideoprocessor_transcodeasync", + "label": ".TranscodeAsync()", "_callable": true, "_origin": "ast", - "community": 32, - "community_name": "TestFixture", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L145" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L146" - } + "s69" ] }, - "norm_label": ".updateasync_setisdisabledtrue_whenalreadydisabled_doesnotrevokesessionsbutsaves()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L141" + "norm_label": ".transcodeasync()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L8" }, { - "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_usernotfound_returnsusernotfound", - "label": ".UpdateAsync_UserNotFound_ReturnsUserNotFound()", + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_log_encoderselected", + "label": ".EncoderSelected()", "_callable": true, "_origin": "ast", - "community": 32, - "community_name": "TestFixture", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L104" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L105" - } + "s69" ] }, - "norm_label": ".updateasync_usernotfound_returnsusernotfound()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L100" + "norm_label": ".encoderselected()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L106" }, { - "id": "src_anichron_api_infrastructure_authmessages_anichron_api_infrastructure_authmessages_accounttemporarilylocked", - "label": ".AccountTemporarilyLocked()", + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_log_encoderunavailable", + "label": ".EncoderUnavailable()", "_callable": true, "_origin": "ast", - "community": 321, - "community_name": "AuthMessages.cs", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Infrastructure", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s0" + "s69" ] }, - "norm_label": ".accounttemporarilylocked()", - "source_file": "src/Anichron.API/Infrastructure/AuthMessages.cs", - "source_location": "L14" + "norm_label": ".encoderunavailable()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L109" }, { - "id": "src_anichron_core_data_anichrondbcontext_anichron_core_data_anichrondbcontext_executeintransactionasync", - "label": ".ExecuteInTransactionAsync()", + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_ivideoproxygenerator_transcodeasync", + "label": ".TranscodeAsync()", "_callable": true, "_origin": "ast", - "community": 327, - "community_name": ".ExecuteInTransactionAsync", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s69" - ], - "unresolved_calls": [ - { - "callee": "BeginTransactionAsync", - "receiver_type": "Database", - "lang": "csharp", - "line": "L20" - } + "s29" ] }, - "norm_label": ".executeintransactionasync()", - "source_file": "src/Anichron.Core/Data/AnichronDbContext.cs", - "source_location": "L18" + "norm_label": ".transcodeasync()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", + "source_location": "L9" }, { - "id": "src_anichron_worker_tests_unit_ingestion_exifdatatests_anichron_worker_tests_unit_ingestion_exifdatatests_empty_hasallzeroandnullfields", - "label": ".Empty_HasAllZeroAndNullFields()", + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator_transcodeasync", + "label": ".TranscodeAsync()", "_callable": true, "_origin": "ast", - "community": 328, - "community_name": "MediaTypeDetectorTests.cs", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s34" + "s29" ] }, - "norm_label": ".empty_hasallzeroandnullfields()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/ExifDataTests.cs", - "source_location": "L7" + "norm_label": ".transcodeasync()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", + "source_location": "L17" }, { "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_dispose_doesnotthrow", @@ -21998,7 +21806,7 @@ "_callable": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -22016,7 +21824,7 @@ "_callable": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -22034,7 +21842,7 @@ "_callable": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -22052,7 +21860,7 @@ "_callable": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -22070,7 +21878,7 @@ "_callable": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -22096,7 +21904,7 @@ "_callable": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -22122,7 +21930,7 @@ "_callable": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -22154,7 +21962,7 @@ "_callable": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -22186,7 +21994,7 @@ "_callable": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -22218,7 +22026,7 @@ "_callable": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -22250,7 +22058,7 @@ "_callable": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -22282,7 +22090,7 @@ "_callable": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -22314,7 +22122,7 @@ "_callable": true, "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -22335,48 +22143,172 @@ "source_location": "L106" }, { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware_caninvoke", + "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_anichron_worker_tests_unit_ingestion_proxy_testfixture_build", + "label": ".Build()", + "_callable": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s144" + ], + "unresolved_calls": [ + { + "callee": "Create", + "receiver_type": "Options", + "lang": "csharp", + "line": "L17" + }, + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L18" + } + ] + }, + "norm_label": ".build()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/FfmpegVideoProcessorTests.cs", + "source_location": "L14" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_video720pgenerator_filename_isvideo720pmp4", + "label": ".Video720PGenerator_FileName_IsVideo720pMp4()", + "_callable": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s68" + ], + "unresolved_calls": [ + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L15" + } + ] + }, + "norm_label": ".video720pgenerator_filename_isvideo720pmp4()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", + "source_location": "L12" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_video720pgenerator_proxytype_iswebvideo", + "label": ".Video720PGenerator_ProxyType_IsWebVideo()", + "_callable": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s68" + ], + "unresolved_calls": [ + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L23" + } + ] + }, + "norm_label": ".video720pgenerator_proxytype_iswebvideo()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", + "source_location": "L20" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_video720pgenerator_transcodeasync_delegatestovideoprocessorasync", + "label": ".Video720PGenerator_TranscodeAsync_DelegatesToVideoProcessorAsync()", + "_callable": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s68" + ], + "unresolved_calls": [ + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L31" + } + ] + }, + "norm_label": ".video720pgenerator_transcodeasync_delegatestovideoprocessorasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", + "source_location": "L28" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_cancellingmiddleware_caninvoke", "label": ".CanInvoke()", "_callable": true, "_origin": "ast", "community": 35, - "community_name": "IIngestionMiddleware", + "community_name": "CancellingMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Pipeline", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", "scope_chain": [ - "s0" + "s368" ] }, "norm_label": ".caninvoke()", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", - "source_location": "L8" + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", + "source_location": "L354" }, { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware_invokeasync", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_cancellingmiddleware_invokeasync", "label": ".InvokeAsync()", "_callable": true, "_origin": "ast", "community": 35, - "community_name": "IIngestionMiddleware", + "community_name": "CancellingMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Pipeline", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", "scope_chain": [ - "s0" + "s368" + ], + "unresolved_calls": [ + { + "callee": "CancelAsync", + "receiver_type": "CancellationTokenSource", + "lang": "csharp", + "line": "L359" + }, + { + "callee": "ThrowIfCancellationRequested", + "receiver_type": "CancellationToken", + "lang": "csharp", + "line": "L360" + } ] }, "norm_label": ".invokeasync()", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", - "source_location": "L9" + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", + "source_location": "L356" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_cancellingmiddleware_caninvoke", - "label": ".CanInvoke()", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxydirectorycreatingmiddleware_invokeasync", + "label": ".InvokeAsync()", "_callable": true, "_origin": "ast", "community": 35, - "community_name": "IIngestionMiddleware", + "community_name": "CancellingMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", @@ -22384,27 +22316,79 @@ "s368" ] }, - "norm_label": ".caninvoke()", + "norm_label": ".invokeasync()", "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L354" + "source_location": "L332" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_stubmiddleware_caninvoke", - "label": ".CanInvoke()", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxywritingmiddleware_invokeasync", + "label": ".InvokeAsync()", "_callable": true, "_origin": "ast", "community": 35, - "community_name": "IIngestionMiddleware", + "community_name": "CancellingMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", "scope_chain": [ "s368" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L315" + } ] }, - "norm_label": ".caninvoke()", + "norm_label": ".invokeasync()", "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L289" + "source_location": "L306" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_stubmiddleware_invokeasync", + "label": ".InvokeAsync()", + "_callable": true, + "_origin": "ast", + "community": 35, + "community_name": "CancellingMiddleware", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", + "scope_chain": [ + "s368" + ], + "unresolved_calls": [ + { + "callee": "Add", + "receiver_type": "List", + "lang": "csharp", + "line": "L293" + } + ] + }, + "norm_label": ".invokeasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", + "source_location": "L291" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_throwingmiddleware_invokeasync", + "label": ".InvokeAsync()", + "_callable": true, + "_origin": "ast", + "community": 35, + "community_name": "CancellingMiddleware", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", + "scope_chain": [ + "s368" + ] + }, + "norm_label": ".invokeasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", + "source_location": "L344" }, { "id": "src_anichron_worker_ingestion_middlewares_loggingmiddleware_anichron_worker_ingestion_middlewares_loggingmiddleware_caninvoke", @@ -22557,8 +22541,8 @@ "source_location": "L29" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinebuildertests_anichron_worker_tests_unit_ingestion_pipeline_conditionalmiddleware_caninvoke", - "label": ".CanInvoke()", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_asset_canbesetandread", + "label": ".Asset_CanBeSetAndRead()", "_callable": true, "_origin": "ast", "community": 37, @@ -22567,16 +22551,24 @@ "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", "scope_chain": [ - "s140" + "s104" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L27" + } ] }, - "norm_label": ".caninvoke()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineBuilderTests.cs", - "source_location": "L61" + "norm_label": ".asset_canbesetandread()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionContextTests.cs", + "source_location": "L21" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_cancellingmiddleware_invokeasync", - "label": ".InvokeAsync()", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_proxyfiles_defaultstoemptylist", + "label": ".ProxyFiles_DefaultsToEmptyList()", "_callable": true, "_origin": "ast", "community": 37, @@ -22585,29 +22577,23 @@ "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", "scope_chain": [ - "s368" + "s104" ], "unresolved_calls": [ { - "callee": "CancelAsync", - "receiver_type": "CancellationTokenSource", - "lang": "csharp", - "line": "L359" - }, - { - "callee": "ThrowIfCancellationRequested", - "receiver_type": "CancellationToken", + "callee": "NewGuid", + "receiver_type": "Guid", "lang": "csharp", - "line": "L360" + "line": "L15" } ] }, - "norm_label": ".invokeasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L356" + "norm_label": ".proxyfiles_defaultstoemptylist()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionContextTests.cs", + "source_location": "L9" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxydirectorycreatingmiddleware_caninvoke", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinebuildertests_anichron_worker_tests_unit_ingestion_pipeline_conditionalmiddleware_caninvoke", "label": ".CanInvoke()", "_callable": true, "_origin": "ast", @@ -22617,16 +22603,16 @@ "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", "scope_chain": [ - "s368" + "s140" ] }, "norm_label": ".caninvoke()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L330" + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineBuilderTests.cs", + "source_location": "L61" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxydirectorycreatingmiddleware_invokeasync", - "label": ".InvokeAsync()", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxywritingmiddleware_caninvoke", + "label": ".CanInvoke()", "_callable": true, "_origin": "ast", "community": 37, @@ -22638,12 +22624,12 @@ "s368" ] }, - "norm_label": ".invokeasync()", + "norm_label": ".caninvoke()", "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L332" + "source_location": "L304" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxywritingmiddleware_caninvoke", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_stubmiddleware_caninvoke", "label": ".CanInvoke()", "_callable": true, "_origin": "ast", @@ -22658,11 +22644,11 @@ }, "norm_label": ".caninvoke()", "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L304" + "source_location": "L289" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxywritingmiddleware_invokeasync", - "label": ".InvokeAsync()", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_throwingmiddleware_caninvoke", + "label": ".CanInvoke()", "_callable": true, "_origin": "ast", "community": 37, @@ -22672,259 +22658,419 @@ "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", "scope_chain": [ "s368" + ] + }, + "norm_label": ".caninvoke()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", + "source_location": "L342" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_findbyrootpathasync", + "label": ".FindByRootPathAsync()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "EfUserStorageConfigRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".findbyrootpathasync()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L22" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_add_config_appearsinsubsequentquery", + "label": ".Add_Config_AppearsInSubsequentQuery()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "EfUserStorageConfigRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s129" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L315" + "line": "L156" } ] }, - "norm_label": ".invokeasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L306" + "norm_label": ".add_config_appearsinsubsequentquery()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L150" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_stubmiddleware_invokeasync", - "label": ".InvokeAsync()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_createdb", + "label": ".CreateDb()", "_callable": true, "_origin": "ast", - "community": 37, - "community_name": "IngestionContext", + "community": 38, + "community_name": "EfUserStorageConfigRepository", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s368" + "s129" ], "unresolved_calls": [ { - "callee": "Add", - "receiver_type": "List", + "callee": "NewGuid", + "receiver_type": "Guid", "lang": "csharp", - "line": "L293" + "line": "L13" } ] }, - "norm_label": ".invokeasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L291" + "norm_label": ".createdb()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L10" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_throwingmiddleware_caninvoke", - "label": ".CanInvoke()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyidasync_matchingid_returnsconfig", + "label": ".FindByIdAsync_MatchingId_ReturnsConfig()", "_callable": true, "_origin": "ast", - "community": 37, - "community_name": "IngestionContext", + "community": 38, + "community_name": "EfUserStorageConfigRepository", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s368" + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L175" + } ] }, - "norm_label": ".caninvoke()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L342" + "norm_label": ".findbyidasync_matchingid_returnsconfig()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L170" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_throwingmiddleware_invokeasync", - "label": ".InvokeAsync()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyidasync_nomatch_returnsnull", + "label": ".FindByIdAsync_NoMatch_ReturnsNull()", "_callable": true, "_origin": "ast", - "community": 37, - "community_name": "IngestionContext", + "community": 38, + "community_name": "EfUserStorageConfigRepository", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s368" + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L191" + } ] }, - "norm_label": ".invokeasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L344" + "norm_label": ".findbyidasync_nomatch_returnsnull()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L186" }, { - "id": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice_deleteasync", - "label": ".DeleteAsync()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyrootpathasync_matchingrootpath_returnsconfig", + "label": ".FindByRootPathAsync_MatchingRootPath_ReturnsConfig()", "_callable": true, "_origin": "ast", "community": 38, - "community_name": ".DeleteAsync", + "community_name": "EfUserStorageConfigRepository", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s92" + "s129" ], "unresolved_calls": [ { - "callee": "GetCurrentInstant", - "receiver_type": "IClock", + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L32" + } + ] + }, + "norm_label": ".findbyrootpathasync_matchingrootpath_returnsconfig()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L25" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyrootpathasync_nomatch_returnsnull", + "label": ".FindByRootPathAsync_NoMatch_ReturnsNull()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "EfUserStorageConfigRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L48" + } + ] + }, + "norm_label": ".findbyrootpathasync_nomatch_returnsnull()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L43" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyrootpathasync_partialpath_returnsnull", + "label": ".FindByRootPathAsync_PartialPath_ReturnsNull()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "EfUserStorageConfigRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", "lang": "csharp", "line": "L62" } ] }, - "norm_label": ".deleteasync()", - "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L53" + "norm_label": ".findbyrootpathasync_partialpath_returnsnull()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L57" }, { - "id": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice_getallasync", - "label": ".GetAllAsync()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getactivebyuseridasync_inactiveconfigforuser_excluded", + "label": ".GetActiveByUserIdAsync_InactiveConfigForUser_Excluded()", "_callable": true, "_origin": "ast", "community": 38, - "community_name": ".DeleteAsync", + "community_name": "EfUserStorageConfigRepository", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s92" + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L136" + } ] }, - "norm_label": ".getallasync()", - "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L21" + "norm_label": ".getactivebyuseridasync_inactiveconfigforuser_excluded()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L131" }, { - "id": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice_getbyidasync", - "label": ".GetByIdAsync()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getactivebyuseridasync_matchinguserid_returnsonlythatusersconfigs", + "label": ".GetActiveByUserIdAsync_MatchingUserId_ReturnsOnlyThatUsersConfigs()", "_callable": true, "_origin": "ast", "community": 38, - "community_name": ".DeleteAsync", + "community_name": "EfUserStorageConfigRepository", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s92" + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L117" + } ] }, - "norm_label": ".getbyidasync()", - "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L24" + "norm_label": ".getactivebyuseridasync_matchinguserid_returnsonlythatusersconfigs()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L112" }, { - "id": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice_updateasync", - "label": ".UpdateAsync()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getallactiveasync_mixedactive_returnsonlyactive", + "label": ".GetAllActiveAsync_MixedActive_ReturnsOnlyActive()", "_callable": true, "_origin": "ast", "community": 38, - "community_name": ".DeleteAsync", + "community_name": "EfUserStorageConfigRepository", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s92" + "s129" ], "unresolved_calls": [ { - "callee": "GetCurrentInstant", - "receiver_type": "IClock", + "callee": "NewGuid", + "receiver_type": "Guid", "lang": "csharp", - "line": "L47" + "line": "L80" } ] }, - "norm_label": ".updateasync()", - "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L27" + "norm_label": ".getallactiveasync_mixedactive_returnsonlyactive()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L75" }, { - "id": "src_anichron_api_services_adminuserservice_anichron_api_services_iadminuserservice_deleteasync", - "label": ".DeleteAsync()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getallactiveasync_noneactive_returnsempty", + "label": ".GetAllActiveAsync_NoneActive_ReturnsEmpty()", "_callable": true, "_origin": "ast", "community": 38, - "community_name": ".DeleteAsync", + "community_name": "EfUserStorageConfigRepository", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s92" + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L99" + } ] }, - "norm_label": ".deleteasync()", - "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L12" + "norm_label": ".getallactiveasync_noneactive_returnsempty()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L94" }, { - "id": "src_anichron_api_services_adminuserservice_anichron_api_services_iadminuserservice_getallasync", - "label": ".GetAllAsync()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getbyuseridasync_noconfigs_returnsempty", + "label": ".GetByUserIdAsync_NoConfigs_ReturnsEmpty()", "_callable": true, "_origin": "ast", "community": 38, - "community_name": ".DeleteAsync", + "community_name": "EfUserStorageConfigRepository", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s92" + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L232" + } ] }, - "norm_label": ".getallasync()", - "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L9" + "norm_label": ".getbyuseridasync_noconfigs_returnsempty()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L225" }, { - "id": "src_anichron_api_services_adminuserservice_anichron_api_services_iadminuserservice_getbyidasync", - "label": ".GetByIdAsync()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getbyuseridasync_returnsallconfigsforuser_includinginactive", + "label": ".GetByUserIdAsync_ReturnsAllConfigsForUser_IncludingInactive()", "_callable": true, "_origin": "ast", "community": 38, - "community_name": ".DeleteAsync", + "community_name": "EfUserStorageConfigRepository", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s92" + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L209" + } ] }, - "norm_label": ".getbyidasync()", - "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L10" + "norm_label": ".getbyuseridasync_returnsallconfigsforuser_includinginactive()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L204" }, { - "id": "src_anichron_api_services_adminuserservice_anichron_api_services_iadminuserservice_updateasync", - "label": ".UpdateAsync()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_makeconfig", + "label": ".MakeConfig()", "_callable": true, "_origin": "ast", "community": 38, - "community_name": ".DeleteAsync", + "community_name": "EfUserStorageConfigRepository", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s92" + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L19" + } ] }, - "norm_label": ".updateasync()", - "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L11" + "norm_label": ".makeconfig()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L18" }, { - "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_testfixture_createtestee", - "label": ".CreateTestee()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_remove_config_disappearsfromsubsequentquery", + "label": ".Remove_Config_DisappearsFromSubsequentQuery()", "_callable": true, "_origin": "ast", "community": 38, - "community_name": ".DeleteAsync", + "community_name": "EfUserStorageConfigRepository", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s121" + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L246" + } ] }, - "norm_label": ".createtestee()", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L21" + "norm_label": ".remove_config_disappearsfromsubsequentquery()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L241" }, { "id": "src_anichron_worker_tests_unit_ingestion_livephotolinkertests_anichron_worker_tests_unit_ingestion_livephotolinkertests_link_emptydirectory_returnsemptyresult", @@ -23440,7 +23586,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -23458,7 +23604,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -23476,7 +23622,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -23494,7 +23640,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -23512,7 +23658,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -23530,7 +23676,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -23548,7 +23694,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -23566,7 +23712,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -23604,7 +23750,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -23654,7 +23800,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Endpoints", @@ -23680,7 +23826,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -23718,7 +23864,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -23756,7 +23902,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -23806,7 +23952,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -23856,7 +24002,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -23906,7 +24052,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -23938,7 +24084,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -23970,7 +24116,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -24008,7 +24154,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -24046,7 +24192,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -24064,7 +24210,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -24090,7 +24236,7 @@ "_callable": true, "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", @@ -24393,192 +24539,302 @@ "source_location": "L105" }, { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice_islockedout", - "label": ".IsLockedOut()", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_addasync_pathalreadyassigned_returnspathalreadyassigned", + "label": ".AddAsync_PathAlreadyAssigned_ReturnsPathAlreadyAssigned()", "_callable": true, "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s84" + "s121" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L94" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L95" + } ] }, - "norm_label": ".islockedout()", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L9" + "norm_label": ".addasync_pathalreadyassigned_returnspathalreadyassigned()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L90" }, { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice_preparereset", - "label": ".PrepareReset()", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_addasync_usernotfound_returnsusernotfound", + "label": ".AddAsync_UserNotFound_ReturnsUserNotFound()", "_callable": true, "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s84" + "s121" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L79" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L80" + } ] }, - "norm_label": ".preparereset()", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L12" + "norm_label": ".addasync_usernotfound_returnsusernotfound()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L75" }, { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice_recordfailedattemptasync", - "label": ".RecordFailedAttemptAsync()", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_addasync_validinput_addsconfigandsaves", + "label": ".AddAsync_ValidInput_AddsConfigAndSaves()", "_callable": true, "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s84" + "s121" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L111" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L113" + }, + { + "callee": "Is", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L125" + } ] }, - "norm_label": ".recordfailedattemptasync()", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L10" + "norm_label": ".addasync_validinput_addsconfigandsaves()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L107" }, { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_computebackoffseconds", - "label": ".ComputeBackoffSeconds()", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_addasync_whitespacerootpath_returnspathinvalid", + "label": ".AddAsync_WhitespaceRootPath_ReturnsPathInvalid()", "_callable": true, "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s84" + "s121" ], "unresolved_calls": [ { - "callee": "Pow", - "receiver_type": "Math", + "callee": "NewGuid", + "receiver_type": "Guid", "lang": "csharp", - "line": "L39" + "line": "L67" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L71" } ] }, - "norm_label": ".computebackoffseconds()", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L35" + "norm_label": ".addasync_whitespacerootpath_returnspathinvalid()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L60" }, { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_islockedout", - "label": ".IsLockedOut()", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_deleteasync_configbelongstodifferentuser_returnsstorageconfignotfound", + "label": ".DeleteAsync_ConfigBelongsToDifferentUser_ReturnsStorageConfigNotFound()", "_callable": true, "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s84" + "s121" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L153" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L156" + } ] }, - "norm_label": ".islockedout()", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L17" + "norm_label": ".deleteasync_configbelongstodifferentuser_returnsstorageconfignotfound()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L149" }, { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_preparereset", - "label": ".PrepareReset()", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_deleteasync_confignotfound_returnsstorageconfignotfound", + "label": ".DeleteAsync_ConfigNotFound_ReturnsStorageConfigNotFound()", "_callable": true, "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s84" + "s121" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L137" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L139" + } ] }, - "norm_label": ".preparereset()", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L29" + "norm_label": ".deleteasync_confignotfound_returnsstorageconfignotfound()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L133" }, { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_recordfailedattemptasync", - "label": ".RecordFailedAttemptAsync()", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_deleteasync_validinput_removesconfigandsaves", + "label": ".DeleteAsync_ValidInput_RemovesConfigAndSaves()", "_callable": true, "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s84" + "s121" ], "unresolved_calls": [ { - "callee": "Plus", - "receiver_type": "Instant", + "callee": "NewGuid", + "receiver_type": "Guid", "lang": "csharp", - "line": "L25" + "line": "L170" }, { - "callee": "FromSeconds", - "receiver_type": "Duration", + "callee": "Any", + "receiver_type": "Arg", "lang": "csharp", - "line": "L25" + "line": "L173" } ] }, - "norm_label": ".recordfailedattemptasync()", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L20" + "norm_label": ".deleteasync_validinput_removesconfigandsaves()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L166" }, { - "id": "src_anichron_api_tests_unit_services_lockoutservicetests_anichron_api_tests_unit_services_lockoutservicetests_computebackoffseconds_returnsexpectedseconds", - "label": ".ComputeBackoffSeconds_ReturnsExpectedSeconds()", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_getbyuseridasync_userexists_returnsconfigs", + "label": ".GetByUserIdAsync_UserExists_ReturnsConfigs()", "_callable": true, "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s84" + "s121" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L42" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L43" + } ] }, - "norm_label": ".computebackoffseconds_returnsexpectedseconds()", - "source_file": "src/Anichron.API.Tests.Unit/Services/LockoutServiceTests.cs", - "source_location": "L154" + "norm_label": ".getbyuseridasync_userexists_returnsconfigs()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L38" }, { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_log_proxiesgenerated", - "label": ".ProxiesGenerated()", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_getbyuseridasync_usernotfound_returnsusernotfound", + "label": ".GetByUserIdAsync_UserNotFound_ReturnsUserNotFound()", "_callable": true, "_origin": "ast", - "community": 51, + "community": 50, "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Middlewares", + "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s110" + "s121" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L28" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L29" + } ] }, - "norm_label": ".proxiesgenerated()", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", - "source_location": "L41" + "norm_label": ".getbyuseridasync_usernotfound_returnsusernotfound()", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L24" }, { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_videoproxymiddleware_caninvoke", - "label": ".CanInvoke()", + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_log_proxiesgenerated", + "label": ".ProxiesGenerated()", "_callable": true, "_origin": "ast", "community": 51, @@ -24590,13 +24846,13 @@ "s110" ] }, - "norm_label": ".caninvoke()", + "norm_label": ".proxiesgenerated()", "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", - "source_location": "L14" + "source_location": "L41" }, { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_videoproxymiddleware_invokeasync", - "label": ".InvokeAsync()", + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_videoproxymiddleware_caninvoke", + "label": ".CanInvoke()", "_callable": true, "_origin": "ast", "community": 51, @@ -24606,55 +24862,11 @@ "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ "s110" - ], - "unresolved_calls": [ - { - "callee": "ToArray", - "receiver_type": "IEnumerable", - "lang": "csharp", - "line": "L23" - } ] }, - "norm_label": ".invokeasync()", + "norm_label": ".caninvoke()", "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", - "source_location": "L17" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_ivideoproxygenerator_transcodeasync", - "label": ".TranscodeAsync()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s29" - ] - }, - "norm_label": ".transcodeasync()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L9" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator_transcodeasync", - "label": ".TranscodeAsync()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s29" - ] - }, - "norm_label": ".transcodeasync()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L17" + "source_location": "L14" }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_videoproxymiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_testfixture_build", @@ -25194,84 +25406,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/VideoProxyMiddlewareTests.cs", "source_location": "L74" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_video720pgenerator_filename_isvideo720pmp4", - "label": ".Video720PGenerator_FileName_IsVideo720pMp4()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s68" - ], - "unresolved_calls": [ - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L15" - } - ] - }, - "norm_label": ".video720pgenerator_filename_isvideo720pmp4()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", - "source_location": "L12" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_video720pgenerator_proxytype_iswebvideo", - "label": ".Video720PGenerator_ProxyType_IsWebVideo()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s68" - ], - "unresolved_calls": [ - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L23" - } - ] - }, - "norm_label": ".video720pgenerator_proxytype_iswebvideo()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", - "source_location": "L20" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_video720pgenerator_transcodeasync_delegatestovideoprocessorasync", - "label": ".Video720PGenerator_TranscodeAsync_DelegatesToVideoProcessorAsync()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s68" - ], - "unresolved_calls": [ - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L31" - } - ] - }, - "norm_label": ".video720pgenerator_transcodeasync_delegatestovideoprocessorasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", - "source_location": "L28" - }, { "id": "src_anichron_api_infrastructure_healthcheckresponsewriter_anichron_api_infrastructure_healthcheckresponsewriter_writeresponseasync", "label": ".WriteResponseAsync()", @@ -25441,72 +25575,108 @@ "source_location": "L47" }, { - "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_anichron_worker_ingestion_middlewares_imageproxymiddleware_caninvoke", - "label": ".CanInvoke()", + "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log_allusermode", + "label": ".AllUserMode()", "_callable": true, "_origin": "ast", "community": 57, - "community_name": "ImageProxyMiddleware", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Middlewares", + "namespace": "Anichron.Worker.Startup", "scope_chain": [ - "s209" + "s192" ] }, - "norm_label": ".caninvoke()", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ImageProxyMiddleware.cs", - "source_location": "L18" + "norm_label": ".allusermode()", + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L67" }, { - "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_anichron_worker_ingestion_middlewares_imageproxymiddleware_invokeasync", - "label": ".InvokeAsync()", + "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log_storageconfigcreated", + "label": ".StorageConfigCreated()", "_callable": true, "_origin": "ast", "community": 57, - "community_name": "ImageProxyMiddleware", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Middlewares", + "namespace": "Anichron.Worker.Startup", "scope_chain": [ - "s209" + "s192" + ] + }, + "norm_label": ".storageconfigcreated()", + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L73" + }, + { + "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log_storageconfigexists", + "label": ".StorageConfigExists()", + "_callable": true, + "_origin": "ast", + "community": 57, + "community_name": "WorkerInitializer", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s192" + ] + }, + "norm_label": ".storageconfigexists()", + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L70" + }, + { + "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_workerinitializer_startasync", + "label": ".StartAsync()", + "_callable": true, + "_origin": "ast", + "community": 57, + "community_name": "WorkerInitializer", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s192" ], "unresolved_calls": [ { - "callee": "Select", - "receiver_type": "IEnumerable", + "callee": "CreateAsyncScope", + "receiver_type": "IServiceScopeFactory", "lang": "csharp", - "line": "L30" + "line": "L26" }, { - "callee": "WhenAll", - "receiver_type": "Task", + "callee": "NewGuid", + "receiver_type": "Guid", "lang": "csharp", - "line": "L31" + "line": "L52" } ] }, - "norm_label": ".invokeasync()", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ImageProxyMiddleware.cs", - "source_location": "L21" + "norm_label": ".startasync()", + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L18" }, { - "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_anichron_worker_ingestion_middlewares_log_proxiesgenerated", - "label": ".ProxiesGenerated()", + "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_workerinitializer_stopasync", + "label": ".StopAsync()", "_callable": true, "_origin": "ast", "community": 57, - "community_name": "ImageProxyMiddleware", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Middlewares", + "namespace": "Anichron.Worker.Startup", "scope_chain": [ - "s209" + "s192" ] }, - "norm_label": ".proxiesgenerated()", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ImageProxyMiddleware.cs", - "source_location": "L56" + "norm_label": ".stopasync()", + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L63" }, { "id": "src_anichron_worker_ingestion_middlewares_exifextractionmiddleware_anichron_worker_ingestion_middlewares_exifextractionmiddleware_buildexifdata", @@ -26316,7 +26486,7 @@ "_callable": true, "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Middlewares", @@ -26328,13 +26498,31 @@ "source_file": "src/Anichron.Worker/Ingestion/Middlewares/LoggingMiddleware.cs", "source_location": "L10" }, + { + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_capturinglogger_beginscope", + "label": ".BeginScope()", + "_callable": true, + "_origin": "ast", + "community": 65, + "community_name": "CapturingLogger", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", + "scope_chain": [ + "s185" + ] + }, + "norm_label": ".beginscope()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/LoggingMiddlewareTests.cs", + "source_location": "L119" + }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_invokeasync_always_callsnextasync", "label": ".InvokeAsync_Always_CallsNextAsync()", "_callable": true, "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", @@ -26360,7 +26548,7 @@ "_callable": true, "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", @@ -26378,7 +26566,7 @@ "_callable": true, "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", @@ -26396,7 +26584,7 @@ "_callable": true, "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", @@ -26422,7 +26610,7 @@ "_callable": true, "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", @@ -26440,7 +26628,7 @@ "_callable": true, "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", @@ -26461,66 +26649,266 @@ "source_location": "L11" }, { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_capturinglogger_beginscope", - "label": ".BeginScope()", + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_build", + "label": ".Build()", "_callable": true, "_origin": "ast", "community": 68, - "community_name": "CapturingLogger", + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Maintenance", + "namespace": "Anichron.Worker.Tests.Unit.Startup", "scope_chain": [ - "s241" + "s307" + ], + "unresolved_calls": [ + { + "callee": "Create", + "receiver_type": "Options", + "lang": "csharp", + "line": "L40" + }, + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L43" + } ] }, - "norm_label": ".beginscope()", - "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", - "source_location": "L97" + "norm_label": ".build()", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L38" }, { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_capturinglogger_isenabled", - "label": ".IsEnabled()", + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_startasync_credentialnormalized_trimsandlowercasesasync", + "label": ".StartAsync_CredentialNormalized_TrimsAndLowercasesAsync()", "_callable": true, "_origin": "ast", "community": 68, - "community_name": "CapturingLogger", + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Maintenance", + "namespace": "Anichron.Worker.Tests.Unit.Startup", "scope_chain": [ - "s241" + "s307" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L105" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L106" + } ] }, - "norm_label": ".isenabled()", - "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", - "source_location": "L96" + "norm_label": ".startasync_credentialnormalized_trimsandlowercasesasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L100" }, { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_capturinglogger_log", - "label": ".Log()", + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_startasync_existingconfigdifferentuser_throwsinvalidoperationexceptionwithrootpathinmessageasync", + "label": ".StartAsync_ExistingConfigDifferentUser_ThrowsInvalidOperationExceptionWithRootPathInMessageAsync()", "_callable": true, "_origin": "ast", "community": 68, - "community_name": "CapturingLogger", + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Maintenance", + "namespace": "Anichron.Worker.Tests.Unit.Startup", "scope_chain": [ - "s241" + "s307" ], "unresolved_calls": [ { - "callee": "Add", - "receiver_type": "List", + "callee": "NewGuid", + "receiver_type": "Guid", "lang": "csharp", - "line": "L94" + "line": "L150" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L152" } ] }, - "norm_label": ".log()", - "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", - "source_location": "L93" + "norm_label": ".startasync_existingconfigdifferentuser_throwsinvalidoperationexceptionwithrootpathinmessageasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L145" + }, + { + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_startasync_existingconfigsameuser_skipssaveandsetsresolveduseridasync", + "label": ".StartAsync_ExistingConfigSameUser_SkipsSaveAndSetsResolvedUserIdAsync()", + "_callable": true, + "_origin": "ast", + "community": 68, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Startup", + "scope_chain": [ + "s307" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L128" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L130" + } + ] + }, + "norm_label": ".startasync_existingconfigsameuser_skipssaveandsetsresolveduseridasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L123" + }, + { + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_startasync_noexistingconfig_createsstorageconfigwithcorrectfieldsandsetsresolveduseridasync", + "label": ".StartAsync_NoExistingConfig_CreatesStorageConfigWithCorrectFieldsAndSetsResolvedUserIdAsync()", + "_callable": true, + "_origin": "ast", + "community": 68, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Startup", + "scope_chain": [ + "s307" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L171" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L172" + }, + { + "callee": "Is", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L180" + } + ] + }, + "norm_label": ".startasync_noexistingconfig_createsstorageconfigwithcorrectfieldsandsetsresolveduseridasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L166" + }, + { + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_startasync_unknownuser_throwsinvalidoperationexceptionwithuserinmessageasync", + "label": ".StartAsync_UnknownUser_ThrowsInvalidOperationExceptionWithUserInMessageAsync()", + "_callable": true, + "_origin": "ast", + "community": 68, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Startup", + "scope_chain": [ + "s307" + ], + "unresolved_calls": [ + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L86" + } + ] + }, + "norm_label": ".startasync_unknownuser_throwsinvalidoperationexceptionwithuserinmessageasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L81" + }, + { + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_startasync_userisempty_logsallusermodeandmakesnodbcallsasync", + "label": ".StartAsync_UserIsEmpty_LogsAllUserModeAndMakesNoDbCallsAsync()", + "_callable": true, + "_origin": "ast", + "community": 68, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Startup", + "scope_chain": [ + "s307" + ], + "unresolved_calls": [ + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L59" + } + ] + }, + "norm_label": ".startasync_userisempty_logsallusermodeandmakesnodbcallsasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L50" + }, + { + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_startasync_useriswhitespace_logsallusermodeandmakesnodbcallsasync", + "label": ".StartAsync_UserIsWhitespace_LogsAllUserModeAndMakesNoDbCallsAsync()", + "_callable": true, + "_origin": "ast", + "community": 68, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Startup", + "scope_chain": [ + "s307" + ], + "unresolved_calls": [ + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L73" + } + ] + }, + "norm_label": ".startasync_useriswhitespace_logsallusermodeandmakesnodbcallsasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L64" + }, + { + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_workerinitializertests_stopasync_alwayscompletessuccessfullyasync", + "label": ".StopAsync_AlwaysCompletesSuccessfullyAsync()", + "_callable": true, + "_origin": "ast", + "community": 68, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Startup", + "scope_chain": [ + "s307" + ] + }, + "norm_label": ".stopasync_alwayscompletessuccessfullyasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L192" }, { "id": "src_anichron_api_tests_unit_services_tokenservicetests_anichron_api_tests_unit_services_testfixture_captureaddedtoken", @@ -27120,360 +27508,6 @@ "source_file": "src/Anichron.API.Tests.Unit/Services/TokenServiceTests.cs", "source_location": "L255" }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_add", - "label": ".Add()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".add()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L23" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_deleteexpiredasync", - "label": ".DeleteExpiredAsync()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".deleteexpiredasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L31" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_findbyhashasync", - "label": ".FindByHashAsync()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".findbyhashasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L20" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_findbyhashwithuserasync", - "label": ".FindByHashWithUserAsync()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".findbyhashwithuserasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L17" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_revokeallactivebyuseridasync", - "label": ".RevokeAllActiveByUserIdAsync()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".revokeallactivebyuseridasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L26" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_add", - "label": ".Add()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".add()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L10" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_deleteexpiredasync", - "label": ".DeleteExpiredAsync()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".deleteexpiredasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L12" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_findbyhashasync", - "label": ".FindByHashAsync()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".findbyhashasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L9" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_findbyhashwithuserasync", - "label": ".FindByHashWithUserAsync()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".findbyhashwithuserasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L8" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_revokeallactivebyuseridasync", - "label": ".RevokeAllActiveByUserIdAsync()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".revokeallactivebyuseridasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L11" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_add_addstokentocontext", - "label": ".Add_AddsTokenToContext()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s145" - ] - }, - "norm_label": ".add_addstokentocontext()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L105" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_createdb", - "label": ".CreateDb()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s145" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L16" - } - ] - }, - "norm_label": ".createdb()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L13" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashasync_knownhash_returnstoken", - "label": ".FindByHashAsync_KnownHash_ReturnsToken()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s145" - ] - }, - "norm_label": ".findbyhashasync_knownhash_returnstoken()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L72" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashasync_unknownhash_returnsnull", - "label": ".FindByHashAsync_UnknownHash_ReturnsNull()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s145" - ] - }, - "norm_label": ".findbyhashasync_unknownhash_returnsnull()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L90" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashwithuserasync_knownhash_returnstokenwithuserloaded", - "label": ".FindByHashWithUserAsync_KnownHash_ReturnsTokenWithUserLoaded()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s145" - ] - }, - "norm_label": ".findbyhashwithuserasync_knownhash_returnstokenwithuserloaded()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L39" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashwithuserasync_unknownhash_returnsnull", - "label": ".FindByHashWithUserAsync_UnknownHash_ReturnsNull()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s145" - ] - }, - "norm_label": ".findbyhashwithuserasync_unknownhash_returnsnull()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L57" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_maketoken", - "label": ".MakeToken()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s145" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L27" - }, - { - "callee": "FromDays", - "receiver_type": "Duration", - "lang": "csharp", - "line": "L31" - } - ] - }, - "norm_label": ".maketoken()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L24" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_makeuser", - "label": ".MakeUser()", - "_callable": true, - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s145" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L22" - } - ] - }, - "norm_label": ".makeuser()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L21" - }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_idempotencycheckmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_idempotencycheckmiddlewaretests_invokeasync_knownhash_doesnotcallnextasync", "label": ".InvokeAsync_KnownHash_DoesNotCallNextAsync()", @@ -27664,6 +27698,50 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/IdempotencyCheckMiddlewareTests.cs", "source_location": "L16" }, + { + "id": "src_anichron_core_guidfactory_anichron_core_iguidfactory_newguid", + "label": ".NewGuid()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core", + "scope_chain": [ + "s0" + ] + }, + "norm_label": ".newguid()", + "source_file": "src/Anichron.Core/GuidFactory.cs", + "source_location": "L5" + }, + { + "id": "src_anichron_core_guidfactory_anichron_core_timeorderedguidfactory_newguid", + "label": ".NewGuid()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core", + "scope_chain": [ + "s0" + ], + "unresolved_calls": [ + { + "callee": "CreateVersion7", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L10" + } + ] + }, + "norm_label": ".newguid()", + "source_file": "src/Anichron.Core/GuidFactory.cs", + "source_location": "L10" + }, { "id": "src_anichron_worker_ingestion_pipeline_ingestioncontext_anichron_worker_ingestion_pipeline_ingestioncontext_addproxyfile", "label": ".AddProxyFile()", @@ -28772,6 +28850,42 @@ "source_file": "src/Anichron.Infrastructure/Data/DatabaseFacadeExtensions.cs", "source_location": "L21" }, + { + "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_efdatabasemigrator_migrateasync", + "label": ".MigrateAsync()", + "_callable": true, + "_origin": "ast", + "community": 74, + "community_name": "Anichron.Infrastructure.Data", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s63" + ] + }, + "norm_label": ".migrateasync()", + "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", + "source_location": "L13" + }, + { + "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_idatabasemigrator_migrateasync", + "label": ".MigrateAsync()", + "_callable": true, + "_origin": "ast", + "community": 74, + "community_name": "Anichron.Infrastructure.Data", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s63" + ] + }, + "norm_label": ".migrateasync()", + "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", + "source_location": "L8" + }, { "id": "src_anichron_worker_ingestion_pipeline_ingestionpipelinebuilder_anichron_worker_ingestion_pipeline_ingestionpipelinebuilder_build", "label": ".Build()", @@ -30347,91 +30461,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_api_settings_passwordpolicy_anichron_api_settings_passwordpolicy_checkpwnedpasswords", - "label": "CheckPwnedPasswords", - "_origin": "ast", - "community": 1, - "community_name": "AuthResponseMapperTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "checkpwnedpasswords", - "source_file": "src/Anichron.API/Settings/PasswordPolicy.cs", - "source_location": "L7" - }, - { - "id": "src_anichron_api_settings_passwordpolicy_anichron_api_settings_passwordpolicy_maxlength", - "label": "MaxLength", - "_origin": "ast", - "community": 1, - "community_name": "AuthResponseMapperTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "maxlength", - "source_file": "src/Anichron.API/Settings/PasswordPolicy.cs", - "source_location": "L6" - }, - { - "id": "src_anichron_api_settings_passwordpolicy_anichron_api_settings_passwordpolicy_minlength", - "label": "MinLength", - "_origin": "ast", - "community": 1, - "community_name": "AuthResponseMapperTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "minlength", - "source_file": "src/Anichron.API/Settings/PasswordPolicy.cs", - "source_location": "L5" - }, - { - "id": "src_anichron_api_settings_passwordpolicy_anichron_api_settings_passwordpolicy_toolongmessage", - "label": "TooLongMessage", - "_origin": "ast", - "community": 1, - "community_name": "AuthResponseMapperTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "toolongmessage", - "source_file": "src/Anichron.API/Settings/PasswordPolicy.cs", - "source_location": "L10" - }, - { - "id": "src_anichron_api_settings_passwordpolicy_anichron_api_settings_passwordpolicy_tooshortmessage", - "label": "TooShortMessage", - "_origin": "ast", - "community": 1, - "community_name": "AuthResponseMapperTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "tooshortmessage", - "source_file": "src/Anichron.API/Settings/PasswordPolicy.cs", - "source_location": "L9" - }, { "id": "src_anichron_api_tests_unit_endpoints_authresponsemappertests_cs_defaulthttpcontext", "label": "DefaultHttpContext", @@ -31879,7 +31908,7 @@ "label": "Anichron.Core.Migrations", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "metadata": { "kind": "csharp_namespace", @@ -31895,18 +31924,40 @@ "label": "Migration", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "migration", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_api_globalusings", + "label": "Anichron.API/GlobalUsings.cs", + "_origin": "ast", + "community": 104, + "community_name": "nodatime", + "file_type": "code", + "norm_label": "anichron.api/globalusings.cs", + "source_file": "src/Anichron.API/GlobalUsings.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_core_globalusings", + "label": "Anichron.Core/GlobalUsings.cs", + "_origin": "ast", + "community": 104, + "community_name": "nodatime", + "file_type": "code", + "norm_label": "anichron.core/globalusings.cs", + "source_file": "src/Anichron.Core/GlobalUsings.cs", + "source_location": "L1" + }, { "id": "src_anichron_core_migrations_20260511154104_initialschema", "label": "20260511154104_InitialSchema.cs", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "20260511154104_initialschema.cs", "source_file": "src/Anichron.Core/Migrations/20260511154104_InitialSchema.cs", @@ -31917,7 +31968,7 @@ "label": "Guid", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "guid", "source_file": "", @@ -31928,7 +31979,7 @@ "label": "Instant", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "instant", "source_file": "", @@ -31939,7 +31990,7 @@ "label": "LocalDateTime", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "localdatetime", "source_file": "", @@ -31950,7 +32001,7 @@ "label": "MigrationBuilder", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "migrationbuilder", "source_file": "", @@ -31961,7 +32012,7 @@ "label": "20260511154104_InitialSchema.Designer.cs", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "20260511154104_initialschema.designer.cs", "source_file": "src/Anichron.Core/Migrations/20260511154104_InitialSchema.Designer.cs", @@ -31972,7 +32023,7 @@ "label": "Guid", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "guid", "source_file": "", @@ -31983,7 +32034,7 @@ "label": "Instant", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "instant", "source_file": "", @@ -31994,7 +32045,7 @@ "label": "LocalDateTime", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "localdatetime", "source_file": "", @@ -32005,7 +32056,7 @@ "label": "ModelBuilder", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "modelbuilder", "source_file": "", @@ -32016,7 +32067,7 @@ "label": "20260927145042_AddSchemaComments.cs", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "20260927145042_addschemacomments.cs", "source_file": "src/Anichron.Core/Migrations/20260927145042_AddSchemaComments.cs", @@ -32027,7 +32078,7 @@ "label": "Guid", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "guid", "source_file": "", @@ -32038,7 +32089,7 @@ "label": "MigrationBuilder", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "migrationbuilder", "source_file": "", @@ -32049,7 +32100,7 @@ "label": "20260927145042_AddSchemaComments.Designer.cs", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "20260927145042_addschemacomments.designer.cs", "source_file": "src/Anichron.Core/Migrations/20260927145042_AddSchemaComments.Designer.cs", @@ -32060,7 +32111,7 @@ "label": "Guid", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "guid", "source_file": "", @@ -32071,7 +32122,7 @@ "label": "Instant", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "instant", "source_file": "", @@ -32082,7 +32133,7 @@ "label": "LocalDateTime", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "localdatetime", "source_file": "", @@ -32093,7 +32144,7 @@ "label": "ModelBuilder", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "modelbuilder", "source_file": "", @@ -32104,12 +32155,35 @@ "label": "AnichronDbContextModelSnapshot.cs", "_origin": "ast", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "file_type": "code", "norm_label": "anichrondbcontextmodelsnapshot.cs", "source_file": "src/Anichron.Core/Migrations/AnichronDbContextModelSnapshot.cs", "source_location": "L1" }, + { + "id": "src_anichron_worker_ingestion_exifdata", + "label": "ExifData.cs", + "_origin": "ast", + "community": 104, + "community_name": "nodatime", + "file_type": "code", + "norm_label": "exifdata.cs", + "source_file": "src/Anichron.Worker/Ingestion/ExifData.cs", + "source_location": "L1" + }, + { + "id": "docs_adr_0004_schema_documentation_why_the_rationale_goes_in_comment_not_in_markdown", + "label": "Why the rationale goes in `COMMENT`, not in Markdown", + "_origin": "ast", + "community": 104, + "community_name": "nodatime", + "file_type": "document", + "node_kind": "heading", + "norm_label": "why the rationale goes in `comment`, not in markdown", + "source_file": "docs/adr/0004-schema-documentation.md", + "source_location": "L42" + }, { "id": "src_anichron_infrastructure_packages_lock_dependencies_microsoft_extensions_configuration", "label": "Microsoft.Extensions.Configuration", @@ -32848,81 +32922,169 @@ "source_location": "L211" }, { - "id": "semaphoreslim", - "label": "SemaphoreSlim", + "id": "src_anichron_api_services_tokenservice_cs_cancellationtoken", + "label": "CancellationToken", "_origin": "ast", "community": 108, - "community_name": "FfmpegVideoProcessor", + "community_name": "TokenService", "file_type": "code", - "norm_label": "semaphoreslim", + "norm_label": "cancellationtoken", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_cs_cancellationtoken", - "label": "CancellationToken", + "id": "src_anichron_api_services_tokenservice_cs_guid", + "label": "Guid", "_origin": "ast", "community": 108, - "community_name": "FfmpegVideoProcessor", + "community_name": "TokenService", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_services_tokenservice_cs_iclock", + "label": "IClock", + "_origin": "ast", + "community": 108, + "community_name": "TokenService", + "file_type": "code", + "norm_label": "iclock", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_services_tokenservice_cs_iguidfactory", + "label": "IGuidFactory", + "_origin": "ast", + "community": 108, + "community_name": "TokenService", + "file_type": "code", + "norm_label": "iguidfactory", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_services_tokenservice_cs_instant", + "label": "Instant", + "_origin": "ast", + "community": 108, + "community_name": "TokenService", + "file_type": "code", + "norm_label": "instant", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_services_tokenservice_cs_ioptions", + "label": "IOptions", + "_origin": "ast", + "community": 108, + "community_name": "TokenService", + "file_type": "code", + "norm_label": "ioptions", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_services_tokenservice_cs_task", + "label": "Task", + "_origin": "ast", + "community": 108, + "community_name": "TokenService", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_crawling_worker_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 109, + "community_name": "Worker", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_cs_ilogger", + "id": "src_anichron_worker_crawling_worker_cs_guid", + "label": "Guid", + "_origin": "ast", + "community": 109, + "community_name": "Worker", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_crawling_worker_cs_ilogger", "label": "ILogger", "_origin": "ast", - "community": 108, - "community_name": "FfmpegVideoProcessor", + "community": 109, + "community_name": "Worker", "file_type": "code", "norm_label": "ilogger", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_cs_ioptions", + "id": "src_anichron_worker_crawling_worker_cs_ioptions", "label": "IOptions", "_origin": "ast", - "community": 108, - "community_name": "FfmpegVideoProcessor", + "community": 109, + "community_name": "Worker", "file_type": "code", "norm_label": "ioptions", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_cs_loggermessage", + "id": "src_anichron_worker_crawling_worker_cs_iservicescopefactory", + "label": "IServiceScopeFactory", + "_origin": "ast", + "community": 109, + "community_name": "Worker", + "file_type": "code", + "norm_label": "iservicescopefactory", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_crawling_worker_cs_loggermessage", "label": "LoggerMessage", "_origin": "ast", - "community": 108, - "community_name": "FfmpegVideoProcessor", + "community": 109, + "community_name": "Worker", "file_type": "code", "norm_label": "loggermessage", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_cs_task", + "id": "src_anichron_worker_crawling_worker_cs_task", "label": "Task", "_origin": "ast", - "community": 108, - "community_name": "FfmpegVideoProcessor", + "community": 109, + "community_name": "Worker", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_settings_workerdefaults", - "label": "WorkerDefaults.cs", + "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_ilogger", + "label": "ILogger", "_origin": "ast", "community": 109, - "community_name": "WorkerDefaults.cs", + "community_name": "Worker", "file_type": "code", - "norm_label": "workerdefaults.cs", - "source_file": "src/Anichron.Worker/Settings/WorkerDefaults.cs", - "source_location": "L1" + "norm_label": "ilogger", + "source_file": "", + "source_location": "" }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_persistencemiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_testfixture_clock", @@ -33650,6 +33812,28 @@ "source_file": "src/Anichron.Core/Data/AnichronDbContext.cs", "source_location": "L8" }, + { + "id": "src_anichron_core_data_anichrondbcontext_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 113, + "community_name": "AnichronDbContext", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_data_anichrondbcontext_cs_func", + "label": "Func", + "_origin": "ast", + "community": 113, + "community_name": "AnichronDbContext", + "file_type": "code", + "norm_label": "func", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_core_data_anichrondbcontext_cs_metadata", "label": "Metadata", @@ -33672,6 +33856,17 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_core_data_anichrondbcontext_cs_task", + "label": "Task", + "_origin": "ast", + "community": 113, + "community_name": "AnichronDbContext", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_core_tests_unit_packages_lock_dependencies_microsoft_extensions_caching_abstractions", "label": "Microsoft.Extensions.Caching.Abstractions", @@ -34520,6 +34715,28 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_tests_unit_settings_workersettingsvalidatortests_cs_ireadonlylist", + "label": "IReadOnlyList", + "_origin": "ast", + "community": 117, + "community_name": "WorkerSettingsValidatorTests", + "file_type": "code", + "norm_label": "ireadonlylist", + "source_file": "", + "source_location": "" + }, + { + "id": "validationresult", + "label": "ValidationResult", + "_origin": "ast", + "community": 117, + "community_name": "WorkerSettingsValidatorTests", + "file_type": "code", + "norm_label": "validationresult", + "source_file": "", + "source_location": "" + }, { "id": "csharp_namespace:0f69f014f0e3a3cd", "label": "Anichron.API.Tests.Unit", @@ -34772,7 +34989,7 @@ "label": "PostgresException", "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "norm_label": "postgresexception", "source_file": "", @@ -34783,7 +35000,7 @@ "label": "CancellationToken", "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -34794,7 +35011,7 @@ "label": "Guid", "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "norm_label": "guid", "source_file": "", @@ -34805,7 +35022,7 @@ "label": "IClock", "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "norm_label": "iclock", "source_file": "", @@ -34816,7 +35033,7 @@ "label": "Task", "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "norm_label": "task", "source_file": "", @@ -34827,7 +35044,7 @@ "label": "CancellationToken", "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -34838,7 +35055,7 @@ "label": "Guid", "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "norm_label": "guid", "source_file": "", @@ -34849,7 +35066,7 @@ "label": "IClock", "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "norm_label": "iclock", "source_file": "", @@ -34860,7 +35077,7 @@ "label": "IGuidFactory", "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "norm_label": "iguidfactory", "source_file": "", @@ -34871,106 +35088,18 @@ "label": "Task", "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_services_tokenservice_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_services_tokenservice_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_services_tokenservice_cs_iclock", - "label": "IClock", - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "norm_label": "iclock", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_services_tokenservice_cs_iguidfactory", - "label": "IGuidFactory", - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "norm_label": "iguidfactory", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_services_tokenservice_cs_instant", - "label": "Instant", - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "norm_label": "instant", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_services_tokenservice_cs_ioptions", - "label": "IOptions", - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "norm_label": "ioptions", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_services_tokenservice_cs_task", - "label": "Task", - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, - { - "id": "src_anichron_core_data_iunitofwork", - "label": "IUnitOfWork.cs", - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "norm_label": "iunitofwork.cs", - "source_file": "src/Anichron.Core/Data/IUnitOfWork.cs", - "source_location": "L1" - }, { "id": "src_anichron_core_data_iunitofwork_cs_cancellationtoken", "label": "CancellationToken", "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -34981,7 +35110,7 @@ "label": "Func", "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "norm_label": "func", "source_file": "", @@ -34992,23 +35121,12 @@ "label": "Task", "_origin": "ast", "community": 12, - "community_name": "IUnitOfWork", + "community_name": "AuthService", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, - { - "id": "src_anichron_core_guidfactory_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 12, - "community_name": "IUnitOfWork", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_testfixture_clock", "label": "Clock", @@ -35154,17 +35272,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_level", - "label": "Level", - "_origin": "ast", - "community": 120, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "level", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_message", "label": "Message", @@ -35198,22 +35305,6 @@ "source_file": "", "source_location": "" }, - { - "id": "csharp_namespace:0e87d3b0dd864944", - "label": "Anichron.Worker.Tests.Unit.Startup", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.Worker.Tests.Unit.Startup" - }, - "norm_label": "anichron.worker.tests.unit.startup", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/DatabaseMigratorServiceTests.cs", - "source_location": "L5", - "type": "namespace" - }, { "id": "csharp_namespace:290f4f8a9cf17aba", "label": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", @@ -35230,38 +35321,6 @@ "source_location": "L7", "type": "namespace" }, - { - "id": "csharp_namespace:42472930ab5dee54", - "label": "Anichron.Worker.Tests.Unit.Crawling", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.Worker.Tests.Unit.Crawling" - }, - "norm_label": "anichron.worker.tests.unit.crawling", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/FileIngestionPipelineTests.cs", - "source_location": "L13", - "type": "namespace" - }, - { - "id": "csharp_namespace:4c2bd96988f664d4", - "label": "Anichron.Worker.Startup", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.Worker.Startup" - }, - "norm_label": "anichron.worker.startup", - "source_file": "src/Anichron.Worker/Startup/DatabaseMigratorService.cs", - "source_location": "L3", - "type": "namespace" - }, { "id": "csharp_namespace:6c2ef9bb06a3c94e", "label": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", @@ -35278,54 +35337,6 @@ "source_location": "L5", "type": "namespace" }, - { - "id": "csharp_namespace:6c34b37d96fb77b9", - "label": "Anichron.Worker.Tests.Unit.Maintenance", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.Worker.Tests.Unit.Maintenance" - }, - "norm_label": "anichron.worker.tests.unit.maintenance", - "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", - "source_location": "L9", - "type": "namespace" - }, - { - "id": "csharp_namespace:76453e29db54b605", - "label": "Anichron.Infrastructure.Configuration", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.Infrastructure.Configuration" - }, - "norm_label": "anichron.infrastructure.configuration", - "source_file": "src/Anichron.Infrastructure/Configuration/AppIniInitializer.cs", - "source_location": "L6", - "type": "namespace" - }, - { - "id": "csharp_namespace:7647a3817e515181", - "label": "Anichron.Worker.Maintenance", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.Worker.Maintenance" - }, - "norm_label": "anichron.worker.maintenance", - "source_file": "src/Anichron.Worker/Maintenance/TokenCleanupService.cs", - "source_location": "L6", - "type": "namespace" - }, { "id": "csharp_namespace:7c193a9689c1b04b", "label": "Anichron.Worker.Ingestion.Pipeline", @@ -35374,54 +35385,6 @@ "source_location": "L5", "type": "namespace" }, - { - "id": "csharp_namespace:8cc1a0a23a5aeb2f", - "label": "Anichron.Worker.Settings", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.Worker.Settings" - }, - "norm_label": "anichron.worker.settings", - "source_file": "src/Anichron.Worker/Settings/WorkerDefaults.cs", - "source_location": "L1", - "type": "namespace" - }, - { - "id": "csharp_namespace:95d29278166f0a1e", - "label": "Anichron.Worker.Tests.Unit.Infrastructure", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.Worker.Tests.Unit.Infrastructure" - }, - "norm_label": "anichron.worker.tests.unit.infrastructure", - "source_file": "src/Anichron.Worker.Tests.Unit/Infrastructure/WorkerServiceCollectionExtensionsTests.cs", - "source_location": "L11", - "type": "namespace" - }, - { - "id": "csharp_namespace:9c3c73549b575877", - "label": "Anichron.Worker.Crawling", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.Worker.Crawling" - }, - "norm_label": "anichron.worker.crawling", - "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", - "source_location": "L10", - "type": "namespace" - }, { "id": "csharp_namespace:a2ab2f8afc8c2056", "label": "Anichron.Worker.Ingestion", @@ -35471,81 +35434,21 @@ "type": "namespace" }, { - "id": "csharp_namespace:e7ede4e1e15a6263", - "label": "Anichron.Worker.Infrastructure", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.Worker.Infrastructure" - }, - "norm_label": "anichron.worker.infrastructure", - "source_file": "src/Anichron.Worker/Infrastructure/HostApplicationBuilderExtensions.cs", - "source_location": "L4", - "type": "namespace" - }, - { - "id": "csharp_namespace:fbb90d1482bcdb40", - "label": "Anichron.Worker.Ingestion.Proxy", + "id": "csharp_namespace:deacb600b2c1e799", + "label": "Anichron.Worker.Tests.Unit.Ingestion", "_origin": "ast", "community": 121, "community_name": "Anichron.Worker.Ingestion.Pipeline", "file_type": "code", "metadata": { "kind": "csharp_namespace", - "namespace": "Anichron.Worker.Ingestion.Proxy" + "namespace": "Anichron.Worker.Tests.Unit.Ingestion" }, - "norm_label": "anichron.worker.ingestion.proxy", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ImageProcessor.cs", - "source_location": "L9", + "norm_label": "anichron.worker.tests.unit.ingestion", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/ExifDataTests.cs", + "source_location": "L3", "type": "namespace" }, - { - "id": "src_anichron_api_globalusings", - "label": "Anichron.API/GlobalUsings.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "anichron.api/globalusings.cs", - "source_file": "src/Anichron.API/GlobalUsings.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_api_infrastructure_webapplicationbuilderextensions", - "label": "WebApplicationBuilderExtensions.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "webapplicationbuilderextensions.cs", - "source_file": "src/Anichron.API/Infrastructure/WebApplicationBuilderExtensions.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_core_globalusings", - "label": "Anichron.Core/GlobalUsings.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "anichron.core/globalusings.cs", - "source_file": "src/Anichron.Core/GlobalUsings.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_infrastructure_configuration_databaseconfiguration", - "label": "DatabaseConfiguration.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "databaseconfiguration.cs", - "source_file": "src/Anichron.Infrastructure/Configuration/DatabaseConfiguration.cs", - "source_location": "L1" - }, { "id": "src_anichron_infrastructure_tests_unit_configuration_appiniinitializertests", "label": "AppIniInitializerTests.cs", @@ -35557,72 +35460,6 @@ "source_file": "src/Anichron.Infrastructure.Tests.Unit/Configuration/AppIniInitializerTests.cs", "source_location": "L1" }, - { - "id": "src_anichron_worker_crawling_fileingestionpipeline", - "label": "FileIngestionPipeline.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "fileingestionpipeline.cs", - "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_crawling_worker", - "label": "Worker.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "worker.cs", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_infrastructure_hostapplicationbuilderextensions", - "label": "HostApplicationBuilderExtensions.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "hostapplicationbuilderextensions.cs", - "source_file": "src/Anichron.Worker/Infrastructure/HostApplicationBuilderExtensions.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_infrastructure_workerservicecollectionextensions", - "label": "WorkerServiceCollectionExtensions.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "workerservicecollectionextensions.cs", - "source_file": "src/Anichron.Worker/Infrastructure/WorkerServiceCollectionExtensions.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_ingestion_exifdata", - "label": "ExifData.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "exifdata.cs", - "source_file": "src/Anichron.Worker/Ingestion/ExifData.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_ingestion_ingestionitem", - "label": "IngestionItem.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "ingestionitem.cs", - "source_file": "src/Anichron.Worker/Ingestion/IngestionItem.cs", - "source_location": "L1" - }, { "id": "src_anichron_worker_ingestion_livephotolinker", "label": "LivePhotoLinker.cs", @@ -35667,6 +35504,17 @@ "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ContentHashingMiddleware.cs", "source_location": "L1" }, + { + "id": "src_anichron_worker_ingestion_middlewares_exifextractionmiddleware", + "label": "ExifExtractionMiddleware.cs", + "_origin": "ast", + "community": 121, + "community_name": "Anichron.Worker.Ingestion.Pipeline", + "file_type": "code", + "norm_label": "exifextractionmiddleware.cs", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ExifExtractionMiddleware.cs", + "source_location": "L1" + }, { "id": "src_anichron_worker_ingestion_middlewares_idempotencycheckmiddleware", "label": "IdempotencyCheckMiddleware.cs", @@ -35722,17 +35570,6 @@ "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IngestionContext.cs", "source_location": "L1" }, - { - "id": "src_anichron_worker_ingestion_pipeline_ingestionpipelinerunner", - "label": "IngestionPipelineRunner.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "ingestionpipelinerunner.cs", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IngestionPipelineRunner.cs", - "source_location": "L1" - }, { "id": "src_anichron_worker_ingestion_proxy_proxyfilebuilder", "label": "ProxyFileBuilder.cs", @@ -35756,102 +35593,47 @@ "source_location": "L1" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor", - "label": "VideoProcessor.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "videoprocessor.cs", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators", - "label": "VideoProxyGenerators.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "videoproxygenerators.cs", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_maintenance_tokencleanupservice", - "label": "TokenCleanupService.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "tokencleanupservice.cs", - "source_file": "src/Anichron.Worker/Maintenance/TokenCleanupService.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_program", - "label": "Anichron.Worker/Program.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "anichron.worker/program.cs", - "source_file": "src/Anichron.Worker/Program.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_startup_databasemigratorservice", - "label": "DatabaseMigratorService.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "databasemigratorservice.cs", - "source_file": "src/Anichron.Worker/Startup/DatabaseMigratorService.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests", - "label": "FileIngestionPipelineTests.cs", + "id": "src_anichron_worker_tests_unit_ingestion_exifdatatests", + "label": "ExifDataTests.cs", "_origin": "ast", "community": 121, "community_name": "Anichron.Worker.Ingestion.Pipeline", "file_type": "code", - "norm_label": "fileingestionpipelinetests.cs", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/FileIngestionPipelineTests.cs", + "norm_label": "exifdatatests.cs", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/ExifDataTests.cs", "source_location": "L1" }, { - "id": "src_anichron_worker_tests_unit_crawling_workertests", - "label": "WorkerTests.cs", + "id": "src_anichron_worker_tests_unit_ingestion_exifdatatests_cs_fact", + "label": "Fact", "_origin": "ast", "community": 121, "community_name": "Anichron.Worker.Ingestion.Pipeline", "file_type": "code", - "norm_label": "workertests.cs", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", - "source_location": "L1" + "norm_label": "fact", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_infrastructure_workerservicecollectionextensionstests", - "label": "WorkerServiceCollectionExtensionsTests.cs", + "id": "src_anichron_worker_tests_unit_ingestion_livephotolinkertests", + "label": "LivePhotoLinkerTests.cs", "_origin": "ast", "community": 121, "community_name": "Anichron.Worker.Ingestion.Pipeline", "file_type": "code", - "norm_label": "workerservicecollectionextensionstests.cs", - "source_file": "src/Anichron.Worker.Tests.Unit/Infrastructure/WorkerServiceCollectionExtensionsTests.cs", + "norm_label": "livephotolinkertests.cs", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/LivePhotoLinkerTests.cs", "source_location": "L1" }, { - "id": "src_anichron_worker_tests_unit_ingestion_livephotolinkertests", - "label": "LivePhotoLinkerTests.cs", + "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests", + "label": "MediaTypeDetectorTests.cs", "_origin": "ast", "community": 121, "community_name": "Anichron.Worker.Ingestion.Pipeline", "file_type": "code", - "norm_label": "livephotolinkertests.cs", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/LivePhotoLinkerTests.cs", + "norm_label": "mediatypedetectortests.cs", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/MediaTypeDetectorTests.cs", "source_location": "L1" }, { @@ -35964,17 +35746,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", "source_location": "L1" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests", - "label": "FfmpegVideoProcessorTests.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "ffmpegvideoprocessortests.cs", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/FfmpegVideoProcessorTests.cs", - "source_location": "L1" - }, { "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxystagingwritertests", "label": "ProxyStagingWriterTests.cs", @@ -35986,39 +35757,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyStagingWriterTests.cs", "source_location": "L1" }, - { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests", - "label": "TokenCleanupServiceTests.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "tokencleanupservicetests.cs", - "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_tests_unit_startup_databasemigratorservicetests", - "label": "DatabaseMigratorServiceTests.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "databasemigratorservicetests.cs", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/DatabaseMigratorServiceTests.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests", - "label": "WorkerInitializerTests.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "norm_label": "workerinitializertests.cs", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L1" - }, { "id": "src_anichron_worker_tests_unit_testdoubles_deletefailingfilesystem", "label": "DeleteFailingFileSystem.cs", @@ -37467,7 +37205,7 @@ "source_location": "L4" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_abstractions_contenthash", + "id": "src_anichron_worker_packages_lock_humanizer_core_contenthash", "label": "contentHash", "_origin": "ast", "community": 13, @@ -37475,10 +37213,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L245" + "source_location": "L170" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_abstractions_resolved", + "id": "src_anichron_worker_packages_lock_humanizer_core_resolved", "label": "resolved", "_origin": "ast", "community": 13, @@ -37486,10 +37224,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L244" + "source_location": "L169" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_abstractions_type", + "id": "src_anichron_worker_packages_lock_humanizer_core_type", "label": "type", "_origin": "ast", "community": 13, @@ -37497,10 +37235,10 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L243" + "source_location": "L168" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_analyzers_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_codeanalysis_analyzers_contenthash", "label": "contentHash", "_origin": "ast", "community": 13, @@ -37508,10 +37246,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L250" + "source_location": "L180" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_analyzers_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_codeanalysis_analyzers_resolved", "label": "resolved", "_origin": "ast", "community": 13, @@ -37519,10 +37257,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L249" + "source_location": "L179" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_analyzers_type", + "id": "src_anichron_worker_packages_lock_microsoft_codeanalysis_analyzers_type", "label": "type", "_origin": "ast", "community": 13, @@ -37530,10 +37268,10 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L248" + "source_location": "L178" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_abstractions_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_analyzers_contenthash", "label": "contentHash", "_origin": "ast", "community": 13, @@ -37541,10 +37279,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L352" + "source_location": "L250" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_abstractions_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_analyzers_resolved", "label": "resolved", "_origin": "ast", "community": 13, @@ -37552,10 +37290,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L351" + "source_location": "L249" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_abstractions_type", + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_analyzers_type", "label": "type", "_origin": "ast", "community": 13, @@ -37563,10 +37301,10 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L350" + "source_location": "L248" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_filesystemglobbing_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_memory_contenthash", "label": "contentHash", "_origin": "ast", "community": 13, @@ -37574,10 +37312,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L399" + "source_location": "L263" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_filesystemglobbing_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_memory_resolved", "label": "resolved", "_origin": "ast", "community": 13, @@ -37585,10 +37323,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L398" + "source_location": "L262" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_filesystemglobbing_type", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_memory_type", "label": "type", "_origin": "ast", "community": 13, @@ -37596,10 +37334,10 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L397" + "source_location": "L261" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_filesystemglobbing_contenthash", "label": "contentHash", "_origin": "ast", "community": 13, @@ -37607,43 +37345,43 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L416" + "source_location": "L399" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_eventlog_contenthash", - "label": "contentHash", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_filesystemglobbing_resolved", + "label": "resolved", "_origin": "ast", "community": 13, "community_name": "net10.0", "file_type": "code", - "norm_label": "contenthash", + "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L471" + "source_location": "L398" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_eventlog_resolved", - "label": "resolved", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_filesystemglobbing_type", + "label": "type", "_origin": "ast", "community": 13, "community_name": "net10.0", "file_type": "code", - "norm_label": "resolved", + "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L470" + "source_location": "L397" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_eventlog_type", - "label": "type", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_options_configurationextensions_contenthash", + "label": "contentHash", "_origin": "ast", "community": 13, "community_name": "net10.0", "file_type": "code", - "norm_label": "type", + "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L469" + "source_location": "L504" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_options_configurationextensions_resolved", "label": "resolved", "_origin": "ast", "community": 13, @@ -37651,10 +37389,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L415" + "source_location": "L503" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_type", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_options_configurationextensions_type", "label": "type", "_origin": "ast", "community": 13, @@ -37662,7 +37400,7 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L414" + "source_location": "L502" }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_primitives_contenthash", @@ -37698,48 +37436,26 @@ "source_location": "L514" }, { - "id": "src_anichron_worker_packages_lock_microsoft_netcore_platforms_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 13, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L521" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_netcore_platforms_resolved", - "label": "resolved", - "_origin": "ast", - "community": 13, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L520" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_netcore_platforms_type", - "label": "type", + "id": "src_anichron_worker_packages_lock_net10_0_humanizer_core", + "label": "Humanizer.Core", "_origin": "ast", "community": 13, "community_name": "net10.0", "file_type": "code", - "norm_label": "type", + "norm_label": "humanizer.core", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L519" + "source_location": "L167" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_entityframeworkcore_abstractions", - "label": "Microsoft.EntityFrameworkCore.Abstractions", + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_codeanalysis_analyzers", + "label": "Microsoft.CodeAnalysis.Analyzers", "_origin": "ast", "community": 13, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.entityframeworkcore.abstractions", + "norm_label": "microsoft.codeanalysis.analyzers", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L242" + "source_location": "L177" }, { "id": "src_anichron_worker_packages_lock_net10_0_microsoft_entityframeworkcore_analyzers", @@ -37753,15 +37469,15 @@ "source_location": "L247" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_dependencyinjection_abstractions", - "label": "Microsoft.Extensions.DependencyInjection.Abstractions", + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_caching_memory", + "label": "Microsoft.Extensions.Caching.Memory", "_origin": "ast", "community": 13, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.extensions.dependencyinjection.abstractions", + "norm_label": "microsoft.extensions.caching.memory", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L349" + "source_location": "L260" }, { "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_filesystemglobbing", @@ -37775,26 +37491,15 @@ "source_location": "L396" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_logging", - "label": "Microsoft.Extensions.Logging", - "_origin": "ast", - "community": 13, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "microsoft.extensions.logging", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L413" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_logging_eventlog", - "label": "Microsoft.Extensions.Logging.EventLog", + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_options_configurationextensions", + "label": "Microsoft.Extensions.Options.ConfigurationExtensions", "_origin": "ast", "community": 13, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.extensions.logging.eventlog", + "norm_label": "microsoft.extensions.options.configurationextensions", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L468" + "source_location": "L501" }, { "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_primitives", @@ -37808,26 +37513,26 @@ "source_location": "L513" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_netcore_platforms", - "label": "Microsoft.NETCore.Platforms", + "id": "src_anichron_worker_packages_lock_net10_0_newtonsoft_json", + "label": "Newtonsoft.Json", "_origin": "ast", "community": 13, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.netcore.platforms", + "norm_label": "newtonsoft.json", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L518" + "source_location": "L544" }, { - "id": "src_anichron_worker_packages_lock_net10_0_newtonsoft_json", - "label": "Newtonsoft.Json", + "id": "src_anichron_worker_packages_lock_net10_0_roslynator_analyzers", + "label": "Roslynator.Analyzers", "_origin": "ast", "community": 13, "community_name": "net10.0", "file_type": "code", - "norm_label": "newtonsoft.json", + "norm_label": "roslynator.analyzers", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L544" + "source_location": "L125" }, { "id": "src_anichron_worker_packages_lock_net10_0_sixlabors_imagesharp", @@ -37851,6 +37556,17 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L137" }, + { + "id": "src_anichron_worker_packages_lock_net10_0_system_codedom", + "label": "System.CodeDom", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "system.codedom", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L558" + }, { "id": "src_anichron_worker_packages_lock_net10_0_system_composition_attributedmodel", "label": "System.Composition.AttributedModel", @@ -37862,6 +37578,17 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L575" }, + { + "id": "src_anichron_worker_packages_lock_net10_0_system_composition_runtime", + "label": "System.Composition.Runtime", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "system.composition.runtime", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L596" + }, { "id": "src_anichron_worker_packages_lock_net10_0_system_diagnostics_eventlog", "label": "System.Diagnostics.EventLog", @@ -37906,6 +37633,50 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L545" }, + { + "id": "src_anichron_worker_packages_lock_roslynator_analyzers_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L129" + }, + { + "id": "src_anichron_worker_packages_lock_roslynator_analyzers_requested", + "label": "requested", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "requested", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L127" + }, + { + "id": "src_anichron_worker_packages_lock_roslynator_analyzers_resolved", + "label": "resolved", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L128" + }, + { + "id": "src_anichron_worker_packages_lock_roslynator_analyzers_type", + "label": "type", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L126" + }, { "id": "src_anichron_worker_packages_lock_sixlabors_imagesharp_contenthash", "label": "contentHash", @@ -37994,6 +37765,39 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L138" }, + { + "id": "src_anichron_worker_packages_lock_system_codedom_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L561" + }, + { + "id": "src_anichron_worker_packages_lock_system_codedom_resolved", + "label": "resolved", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L560" + }, + { + "id": "src_anichron_worker_packages_lock_system_codedom_type", + "label": "type", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L559" + }, { "id": "src_anichron_worker_packages_lock_system_composition_attributedmodel_contenthash", "label": "contentHash", @@ -38027,6 +37831,39 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L576" }, + { + "id": "src_anichron_worker_packages_lock_system_composition_runtime_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L599" + }, + { + "id": "src_anichron_worker_packages_lock_system_composition_runtime_resolved", + "label": "resolved", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L598" + }, + { + "id": "src_anichron_worker_packages_lock_system_composition_runtime_type", + "label": "type", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L597" + }, { "id": "src_anichron_worker_packages_lock_system_diagnostics_eventlog_resolved", "label": "resolved", @@ -40112,45 +39949,12 @@ "source_file": "src/Anichron.Core.Tests.Unit/packages.lock.json", "source_location": "L262" }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_memory_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 142, - "community_name": "Microsoft.Extensions.Caching.Memory", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L263" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_memory_resolved", - "label": "resolved", - "_origin": "ast", - "community": 142, - "community_name": "Microsoft.Extensions.Caching.Memory", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L262" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_memory_type", - "label": "type", - "_origin": "ast", - "community": 142, - "community_name": "Microsoft.Extensions.Caching.Memory", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L261" - }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_contenthash", "label": "contentHash", "_origin": "ast", "community": 142, - "community_name": "Microsoft.Extensions.Caching.Memory", + "community_name": "Microsoft.Extensions.DependencyInjection", "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", @@ -40161,7 +39965,7 @@ "label": "dependencies", "_origin": "ast", "community": 142, - "community_name": "Microsoft.Extensions.Caching.Memory", + "community_name": "Microsoft.Extensions.DependencyInjection", "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker/packages.lock.json", @@ -40172,7 +39976,7 @@ "label": "resolved", "_origin": "ast", "community": 142, - "community_name": "Microsoft.Extensions.Caching.Memory", + "community_name": "Microsoft.Extensions.DependencyInjection", "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", @@ -40183,7 +39987,7 @@ "label": "type", "_origin": "ast", "community": 142, - "community_name": "Microsoft.Extensions.Caching.Memory", + "community_name": "Microsoft.Extensions.DependencyInjection", "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", @@ -40194,7 +39998,7 @@ "label": "contentHash", "_origin": "ast", "community": 142, - "community_name": "Microsoft.Extensions.Caching.Memory", + "community_name": "Microsoft.Extensions.DependencyInjection", "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", @@ -40205,7 +40009,7 @@ "label": "dependencies", "_origin": "ast", "community": 142, - "community_name": "Microsoft.Extensions.Caching.Memory", + "community_name": "Microsoft.Extensions.DependencyInjection", "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker/packages.lock.json", @@ -40216,7 +40020,7 @@ "label": "resolved", "_origin": "ast", "community": 142, - "community_name": "Microsoft.Extensions.Caching.Memory", + "community_name": "Microsoft.Extensions.DependencyInjection", "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", @@ -40227,29 +40031,18 @@ "label": "type", "_origin": "ast", "community": 142, - "community_name": "Microsoft.Extensions.Caching.Memory", + "community_name": "Microsoft.Extensions.DependencyInjection", "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L424" }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_caching_memory", - "label": "Microsoft.Extensions.Caching.Memory", - "_origin": "ast", - "community": 142, - "community_name": "Microsoft.Extensions.Caching.Memory", - "file_type": "code", - "norm_label": "microsoft.extensions.caching.memory", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L260" - }, { "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_dependencyinjection", "label": "Microsoft.Extensions.DependencyInjection", "_origin": "ast", "community": 142, - "community_name": "Microsoft.Extensions.Caching.Memory", + "community_name": "Microsoft.Extensions.DependencyInjection", "file_type": "code", "norm_label": "microsoft.extensions.dependencyinjection", "source_file": "src/Anichron.Worker/packages.lock.json", @@ -40260,7 +40053,7 @@ "label": "Microsoft.Extensions.Logging.Abstractions", "_origin": "ast", "community": 142, - "community_name": "Microsoft.Extensions.Caching.Memory", + "community_name": "Microsoft.Extensions.DependencyInjection", "file_type": "code", "norm_label": "microsoft.extensions.logging.abstractions", "source_file": "src/Anichron.Worker/packages.lock.json", @@ -41712,15 +41505,59 @@ "source_location": "" }, { - "id": "src_anichron_worker_ingestion_middlewares_exifextractionmiddleware", - "label": "ExifExtractionMiddleware.cs", + "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_anichrondbcontext", + "label": "AnichronDbContext", "_origin": "ast", "community": 154, - "community_name": "ExifExtractionMiddleware.cs", + "community_name": "EfRefreshTokenRepository", "file_type": "code", - "norm_label": "exifextractionmiddleware.cs", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ExifExtractionMiddleware.cs", - "source_location": "L1" + "norm_label": "anichrondbcontext", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_fact", + "label": "Fact", + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "norm_label": "fact", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_guid", + "label": "Guid", + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_instant", + "label": "Instant", + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "norm_label": "instant", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_task", + "label": "Task", + "_origin": "ast", + "community": 154, + "community_name": "EfRefreshTokenRepository", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" }, { "id": "src_anichron_api_packages_lock_dependencies_polly_core", @@ -42237,6 +42074,145 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_core_domain_proxytype", + "label": "ProxyType.cs", + "_origin": "ast", + "community": 158, + "community_name": "ProxyFile", + "file_type": "code", + "norm_label": "proxytype.cs", + "source_file": "src/Anichron.Core/Domain/ProxyType.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_core_domain_proxytype_anichron_core_domain_proxytype_blurhash", + "label": "BlurHash", + "_origin": "ast", + "community": 158, + "community_name": "ProxyFile", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "blurhash", + "source_file": "src/Anichron.Core/Domain/ProxyType.cs", + "source_location": "L15" + }, + { + "id": "src_anichron_core_domain_proxytype_anichron_core_domain_proxytype_fullpreview", + "label": "FullPreview", + "_origin": "ast", + "community": 158, + "community_name": "ProxyFile", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "fullpreview", + "source_file": "src/Anichron.Core/Domain/ProxyType.cs", + "source_location": "L12" + }, + { + "id": "src_anichron_core_domain_proxytype_anichron_core_domain_proxytype_thumbnail", + "label": "Thumbnail", + "_origin": "ast", + "community": 158, + "community_name": "ProxyFile", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "thumbnail", + "source_file": "src/Anichron.Core/Domain/ProxyType.cs", + "source_location": "L6" + }, + { + "id": "src_anichron_core_domain_proxytype_anichron_core_domain_proxytype_webvideo", + "label": "WebVideo", + "_origin": "ast", + "community": 158, + "community_name": "ProxyFile", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "webvideo", + "source_file": "src/Anichron.Core/Domain/ProxyType.cs", + "source_location": "L9" + }, + { + "id": "docs_adr_0004_schema_documentation", + "label": "0004-schema-documentation.md", + "_origin": "ast", + "community": 158, + "community_name": "ProxyFile", + "file_type": "document", + "node_kind": "page", + "norm_label": "0004-schema-documentation.md", + "source_file": "docs/adr/0004-schema-documentation.md", + "source_location": "L1" + }, + { + "id": "docs_adr_0004_schema_documentation_consequences", + "label": "Consequences", + "_origin": "ast", + "community": 158, + "community_name": "ProxyFile", + "file_type": "document", + "node_kind": "heading", + "norm_label": "consequences", + "source_file": "docs/adr/0004-schema-documentation.md", + "source_location": "L61" + }, + { + "id": "docs_adr_0004_schema_documentation_schema_documentation_is_generated_and_its_rationale_lives_in_the_schema", + "label": "Schema documentation is generated, and its rationale lives in the schema", + "_origin": "ast", + "community": 158, + "community_name": "ProxyFile", + "file_type": "document", + "node_kind": "heading", + "norm_label": "schema documentation is generated, and its rationale lives in the schema", + "source_file": "docs/adr/0004-schema-documentation.md", + "source_location": "L1" + }, + { + "id": "docs_adr_0004_schema_documentation_what_went_wrong_which_is_the_only_reason_to_take_this_decision", + "label": "What went wrong, which is the only reason to take this decision", + "_origin": "ast", + "community": 158, + "community_name": "ProxyFile", + "file_type": "document", + "node_kind": "heading", + "norm_label": "what went wrong, which is the only reason to take this decision", + "source_file": "docs/adr/0004-schema-documentation.md", + "source_location": "L14" + }, + { + "id": "docs_adr_0004_schema_documentation_why_not_simply_generate_a_nicer_document", + "label": "Why not simply generate a nicer document", + "_origin": "ast", + "community": 158, + "community_name": "ProxyFile", + "file_type": "document", + "node_kind": "heading", + "norm_label": "why not simply generate a nicer document", + "source_file": "docs/adr/0004-schema-documentation.md", + "source_location": "L32" + }, { "id": "src_anichron_core_tests_unit_packages_lock_dependencies_microsoft_extensions_primitives", "label": "Microsoft.Extensions.Primitives", @@ -42363,57 +42339,18 @@ "label": "IHostedService", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "norm_label": "ihostedservice", "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_crawling_workerstate", - "label": "WorkerState.cs", - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "norm_label": "workerstate.cs", - "source_file": "src/Anichron.Worker/Crawling/WorkerState.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_crawling_workerstate_anichron_worker_crawling_workerstate_resolveduserid", - "label": "ResolvedUserId", - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "resolveduserid", - "source_file": "src/Anichron.Worker/Crawling/WorkerState.cs", - "source_location": "L7" - }, - { - "id": "src_anichron_worker_crawling_workerstate_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_startup_databasemigratorservice_anichron_worker_startup_databasemigratorservice_retrydelay", "label": "RetryDelay", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Startup", @@ -42430,7 +42367,7 @@ "label": "CancellationToken", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -42441,7 +42378,7 @@ "label": "Exception", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "norm_label": "exception", "source_file": "", @@ -42452,7 +42389,7 @@ "label": "ILogger", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "norm_label": "ilogger", "source_file": "", @@ -42463,7 +42400,7 @@ "label": "IServiceScopeFactory", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "norm_label": "iservicescopefactory", "source_file": "", @@ -42474,7 +42411,7 @@ "label": "LoggerMessage", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "norm_label": "loggermessage", "source_file": "", @@ -42485,106 +42422,7 @@ "label": "Task", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_startup_idatabasemigrator", - "label": "IDatabaseMigrator.cs", - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "norm_label": "idatabasemigrator.cs", - "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_startup_idatabasemigrator_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_startup_idatabasemigrator_cs_task", - "label": "Task", - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_cs_ilogger", - "label": "ILogger", - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_cs_ioptions", - "label": "IOptions", - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "norm_label": "ioptions", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_cs_iservicescopefactory", - "label": "IServiceScopeFactory", - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "norm_label": "iservicescopefactory", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_cs_loggermessage", - "label": "LoggerMessage", - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", - "file_type": "code", - "norm_label": "loggermessage", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_cs_task", - "label": "Task", - "_origin": "ast", - "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "norm_label": "task", "source_file": "", @@ -42595,7 +42433,7 @@ "label": "Migrator", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -42612,7 +42450,7 @@ "label": "CancellationToken", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -42623,7 +42461,7 @@ "label": "Fact", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "norm_label": "fact", "source_file": "", @@ -42634,7 +42472,7 @@ "label": "ILogger", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "norm_label": "ilogger", "source_file": "", @@ -42645,7 +42483,7 @@ "label": "InvalidOperationException", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "norm_label": "invalidoperationexception", "source_file": "", @@ -42656,7 +42494,7 @@ "label": "IServiceScopeFactory", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "norm_label": "iservicescopefactory", "source_file": "", @@ -42667,7 +42505,7 @@ "label": "Task", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "norm_label": "task", "source_file": "", @@ -42678,7 +42516,7 @@ "label": "TimeSpan", "_origin": "ast", "community": 16, - "community_name": "WorkerInitializer", + "community_name": "TestFixture", "file_type": "code", "norm_label": "timespan", "source_file": "", @@ -42817,48 +42655,121 @@ "source_location": "L100" }, { - "id": "src_anichron_api_packages_lock_microsoft_codeanalysis_analyzers_contenthash", - "label": "contentHash", + "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_testfixture_configrepository", + "label": "ConfigRepository", "_origin": "ast", "community": 162, - "community_name": "Microsoft.CodeAnalysis.Analyzers", + "community_name": "TestFixture", "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L165" + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Crawling", + "scope_chain": [ + "s306" + ] + }, + "norm_label": "configrepository", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", + "source_location": "L16" }, { - "id": "src_anichron_api_packages_lock_microsoft_codeanalysis_analyzers_resolved", - "label": "resolved", + "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_testfixture_pipeline", + "label": "Pipeline", "_origin": "ast", "community": 162, - "community_name": "Microsoft.CodeAnalysis.Analyzers", + "community_name": "TestFixture", "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L164" + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Crawling", + "scope_chain": [ + "s306" + ] + }, + "norm_label": "pipeline", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", + "source_location": "L17" }, { - "id": "src_anichron_api_packages_lock_microsoft_codeanalysis_analyzers_type", - "label": "type", + "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_testfixture_workerstate", + "label": "WorkerState", "_origin": "ast", "community": 162, - "community_name": "Microsoft.CodeAnalysis.Analyzers", + "community_name": "TestFixture", "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L163" + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Crawling", + "scope_chain": [ + "s306" + ] + }, + "norm_label": "workerstate", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", + "source_location": "L18" }, { - "id": "src_anichron_api_packages_lock_net10_0_microsoft_codeanalysis_analyzers", - "label": "Microsoft.CodeAnalysis.Analyzers", + "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_cancellationtoken", + "label": "CancellationToken", "_origin": "ast", "community": 162, - "community_name": "Microsoft.CodeAnalysis.Analyzers", + "community_name": "TestFixture", "file_type": "code", - "norm_label": "microsoft.codeanalysis.analyzers", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L162" + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_fact", + "label": "Fact", + "_origin": "ast", + "community": 162, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "fact", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_guid", + "label": "Guid", + "_origin": "ast", + "community": 162, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_iservicescopefactory", + "label": "IServiceScopeFactory", + "_origin": "ast", + "community": 162, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "iservicescopefactory", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_task", + "label": "Task", + "_origin": "ast", + "community": 162, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_workerstate", + "label": "WorkerState", + "_origin": "ast", + "community": 162, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "workerstate", + "source_file": "", + "source_location": "" }, { "id": "src_anichron_worker_properties_launchsettings", @@ -43388,17 +43299,6 @@ "source_file": "", "source_location": "" }, - { - "id": "jwtsecuritytokenhandler", - "label": "JwtSecurityTokenHandler", - "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", - "file_type": "code", - "norm_label": "jwtsecuritytokenhandler", - "source_file": "", - "source_location": "" - }, { "id": "securitytokeninvalidsignatureexception", "label": "SecurityTokenInvalidSignatureException", @@ -43410,135 +43310,6 @@ "source_file": "", "source_location": "" }, - { - "id": "signingcredentials", - "label": "SigningCredentials", - "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", - "file_type": "code", - "norm_label": "signingcredentials", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_security_jwtfactory_cs_iclock", - "label": "IClock", - "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", - "file_type": "code", - "norm_label": "iclock", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_security_jwtfactory_cs_iguidfactory", - "label": "IGuidFactory", - "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", - "file_type": "code", - "norm_label": "iguidfactory", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_settings_jwtsettings", - "label": "JwtSettings.cs", - "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", - "file_type": "code", - "norm_label": "jwtsettings.cs", - "source_file": "src/Anichron.API/Settings/JwtSettings.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_accesstokenminutes", - "label": "AccessTokenMinutes", - "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "accesstokenminutes", - "source_file": "src/Anichron.API/Settings/JwtSettings.cs", - "source_location": "L8" - }, - { - "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_audience", - "label": "Audience", - "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "audience", - "source_file": "src/Anichron.API/Settings/JwtSettings.cs", - "source_location": "L7" - }, - { - "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_issuer", - "label": "Issuer", - "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "issuer", - "source_file": "src/Anichron.API/Settings/JwtSettings.cs", - "source_location": "L6" - }, - { - "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_refreshtokendays", - "label": "RefreshTokenDays", - "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "refreshtokendays", - "source_file": "src/Anichron.API/Settings/JwtSettings.cs", - "source_location": "L9" - }, - { - "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_secret", - "label": "Secret", - "_origin": "ast", - "community": 17, - "community_name": "JwtFactoryTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "secret", - "source_file": "src/Anichron.API/Settings/JwtSettings.cs", - "source_location": "L5" - }, { "id": "src_anichron_api_tests_unit_security_jwtfactorytests_cs_fact", "label": "Fact", @@ -45255,12 +45026,156 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L144" }, + { + "id": "csharp_namespace:0e87d3b0dd864944", + "label": "Anichron.Worker.Tests.Unit.Startup", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "kind": "csharp_namespace", + "namespace": "Anichron.Worker.Tests.Unit.Startup" + }, + "norm_label": "anichron.worker.tests.unit.startup", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/DatabaseMigratorServiceTests.cs", + "source_location": "L5", + "type": "namespace" + }, + { + "id": "csharp_namespace:42472930ab5dee54", + "label": "Anichron.Worker.Tests.Unit.Crawling", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "kind": "csharp_namespace", + "namespace": "Anichron.Worker.Tests.Unit.Crawling" + }, + "norm_label": "anichron.worker.tests.unit.crawling", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/FileIngestionPipelineTests.cs", + "source_location": "L13", + "type": "namespace" + }, + { + "id": "csharp_namespace:4c2bd96988f664d4", + "label": "Anichron.Worker.Startup", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "kind": "csharp_namespace", + "namespace": "Anichron.Worker.Startup" + }, + "norm_label": "anichron.worker.startup", + "source_file": "src/Anichron.Worker/Startup/DatabaseMigratorService.cs", + "source_location": "L3", + "type": "namespace" + }, + { + "id": "csharp_namespace:6c34b37d96fb77b9", + "label": "Anichron.Worker.Tests.Unit.Maintenance", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "kind": "csharp_namespace", + "namespace": "Anichron.Worker.Tests.Unit.Maintenance" + }, + "norm_label": "anichron.worker.tests.unit.maintenance", + "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", + "source_location": "L9", + "type": "namespace" + }, + { + "id": "csharp_namespace:7647a3817e515181", + "label": "Anichron.Worker.Maintenance", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "kind": "csharp_namespace", + "namespace": "Anichron.Worker.Maintenance" + }, + "norm_label": "anichron.worker.maintenance", + "source_file": "src/Anichron.Worker/Maintenance/TokenCleanupService.cs", + "source_location": "L6", + "type": "namespace" + }, + { + "id": "csharp_namespace:8cc1a0a23a5aeb2f", + "label": "Anichron.Worker.Settings", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "kind": "csharp_namespace", + "namespace": "Anichron.Worker.Settings" + }, + "norm_label": "anichron.worker.settings", + "source_file": "src/Anichron.Worker/Settings/WorkerDefaults.cs", + "source_location": "L1", + "type": "namespace" + }, + { + "id": "csharp_namespace:95d29278166f0a1e", + "label": "Anichron.Worker.Tests.Unit.Infrastructure", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "kind": "csharp_namespace", + "namespace": "Anichron.Worker.Tests.Unit.Infrastructure" + }, + "norm_label": "anichron.worker.tests.unit.infrastructure", + "source_file": "src/Anichron.Worker.Tests.Unit/Infrastructure/WorkerServiceCollectionExtensionsTests.cs", + "source_location": "L11", + "type": "namespace" + }, + { + "id": "csharp_namespace:9c3c73549b575877", + "label": "Anichron.Worker.Crawling", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "kind": "csharp_namespace", + "namespace": "Anichron.Worker.Crawling" + }, + "norm_label": "anichron.worker.crawling", + "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", + "source_location": "L10", + "type": "namespace" + }, + { + "id": "csharp_namespace:e7ede4e1e15a6263", + "label": "Anichron.Worker.Infrastructure", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "kind": "csharp_namespace", + "namespace": "Anichron.Worker.Infrastructure" + }, + "norm_label": "anichron.worker.infrastructure", + "source_file": "src/Anichron.Worker/Infrastructure/HostApplicationBuilderExtensions.cs", + "source_location": "L4", + "type": "namespace" + }, { "id": "csharp_namespace:ef074de659b610bc", "label": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", "_origin": "ast", "community": 182, - "community_name": "ImageProcessor.cs", + "community_name": "microsoft_extensions_options", "file_type": "code", "metadata": { "kind": "csharp_namespace", @@ -45271,34 +45186,226 @@ "source_location": "L6", "type": "namespace" }, + { + "id": "csharp_namespace:fbb90d1482bcdb40", + "label": "Anichron.Worker.Ingestion.Proxy", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "kind": "csharp_namespace", + "namespace": "Anichron.Worker.Ingestion.Proxy" + }, + "norm_label": "anichron.worker.ingestion.proxy", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ImageProcessor.cs", + "source_location": "L9", + "type": "namespace" + }, + { + "id": "src_anichron_worker_crawling_fileingestionpipeline", + "label": "FileIngestionPipeline.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "fileingestionpipeline.cs", + "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_crawling_worker", + "label": "Worker.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "worker.cs", + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_infrastructure_hostapplicationbuilderextensions", + "label": "HostApplicationBuilderExtensions.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "hostapplicationbuilderextensions.cs", + "source_file": "src/Anichron.Worker/Infrastructure/HostApplicationBuilderExtensions.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_infrastructure_workerservicecollectionextensions", + "label": "WorkerServiceCollectionExtensions.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "workerservicecollectionextensions.cs", + "source_file": "src/Anichron.Worker/Infrastructure/WorkerServiceCollectionExtensions.cs", + "source_location": "L1" + }, { "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware", "label": "ImageProxyMiddleware.cs", "_origin": "ast", "community": 182, - "community_name": "ImageProcessor.cs", + "community_name": "microsoft_extensions_options", "file_type": "code", "norm_label": "imageproxymiddleware.cs", "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ImageProxyMiddleware.cs", "source_location": "L1" }, + { + "id": "src_anichron_worker_ingestion_pipeline_ingestionpipelinerunner", + "label": "IngestionPipelineRunner.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "ingestionpipelinerunner.cs", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IngestionPipelineRunner.cs", + "source_location": "L1" + }, { "id": "src_anichron_worker_ingestion_proxy_imageprocessor", "label": "ImageProcessor.cs", "_origin": "ast", "community": 182, - "community_name": "ImageProcessor.cs", + "community_name": "microsoft_extensions_options", "file_type": "code", "norm_label": "imageprocessor.cs", "source_file": "src/Anichron.Worker/Ingestion/Proxy/ImageProcessor.cs", "source_location": "L1" }, + { + "id": "src_anichron_worker_ingestion_proxy_videoprocessor", + "label": "VideoProcessor.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "videoprocessor.cs", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators", + "label": "VideoProxyGenerators.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "videoproxygenerators.cs", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_maintenance_tokencleanupservice", + "label": "TokenCleanupService.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "tokencleanupservice.cs", + "source_file": "src/Anichron.Worker/Maintenance/TokenCleanupService.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_program", + "label": "Anichron.Worker/Program.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "anichron.worker/program.cs", + "source_file": "src/Anichron.Worker/Program.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_settings_workerdefaults", + "label": "WorkerDefaults.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "workerdefaults.cs", + "source_file": "src/Anichron.Worker/Settings/WorkerDefaults.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_startup_databasemigratorservice", + "label": "DatabaseMigratorService.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "databasemigratorservice.cs", + "source_file": "src/Anichron.Worker/Startup/DatabaseMigratorService.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_startup_workerinitializer", + "label": "WorkerInitializer.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "workerinitializer.cs", + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests", + "label": "FileIngestionPipelineTests.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "fileingestionpipelinetests.cs", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/FileIngestionPipelineTests.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_tests_unit_crawling_workertests", + "label": "WorkerTests.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "workertests.cs", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_tests_unit_infrastructure_workerservicecollectionextensionstests", + "label": "WorkerServiceCollectionExtensionsTests.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "workerservicecollectionextensionstests.cs", + "source_file": "src/Anichron.Worker.Tests.Unit/Infrastructure/WorkerServiceCollectionExtensionsTests.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests", + "label": "FfmpegVideoProcessorTests.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "ffmpegvideoprocessortests.cs", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/FfmpegVideoProcessorTests.cs", + "source_location": "L1" + }, { "id": "src_anichron_worker_tests_unit_ingestion_proxy_imageproxygeneratorstests", "label": "ImageProxyGeneratorsTests.cs", "_origin": "ast", "community": 182, - "community_name": "ImageProcessor.cs", + "community_name": "microsoft_extensions_options", "file_type": "code", "norm_label": "imageproxygeneratorstests.cs", "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ImageProxyGeneratorsTests.cs", @@ -45309,7 +45416,7 @@ "label": "ProxyShardStrategyTests.cs", "_origin": "ast", "community": 182, - "community_name": "ImageProcessor.cs", + "community_name": "microsoft_extensions_options", "file_type": "code", "norm_label": "proxyshardstrategytests.cs", "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", @@ -45320,12 +45427,45 @@ "label": "VideoProxyGeneratorsTests.cs", "_origin": "ast", "community": 182, - "community_name": "ImageProcessor.cs", + "community_name": "microsoft_extensions_options", "file_type": "code", "norm_label": "videoproxygeneratorstests.cs", "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", "source_location": "L1" }, + { + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests", + "label": "TokenCleanupServiceTests.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "tokencleanupservicetests.cs", + "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_tests_unit_startup_databasemigratorservicetests", + "label": "DatabaseMigratorServiceTests.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "databasemigratorservicetests.cs", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/DatabaseMigratorServiceTests.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests", + "label": "WorkerInitializerTests.cs", + "_origin": "ast", + "community": 182, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "workerinitializertests.cs", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L1" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_codecoverage", "label": "Microsoft.CodeCoverage", @@ -45415,49 +45555,145 @@ "source_location": "L17" }, { - "id": "src_anichron_core_data_repository_mediaassetrepository_cs_anichrondbcontext", - "label": "AnichronDbContext", + "id": "jwtsecuritytokenhandler", + "label": "JwtSecurityTokenHandler", "_origin": "ast", "community": 184, - "community_name": "IMediaAssetRepository", + "community_name": "JwtSettings", "file_type": "code", - "norm_label": "anichrondbcontext", + "norm_label": "jwtsecuritytokenhandler", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_data_repository_mediaassetrepository_cs_cancellationtoken", - "label": "CancellationToken", + "id": "signingcredentials", + "label": "SigningCredentials", "_origin": "ast", "community": 184, - "community_name": "IMediaAssetRepository", + "community_name": "JwtSettings", "file_type": "code", - "norm_label": "cancellationtoken", + "norm_label": "signingcredentials", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_data_repository_mediaassetrepository_cs_guid", - "label": "Guid", + "id": "src_anichron_api_security_jwtfactory_cs_iclock", + "label": "IClock", "_origin": "ast", "community": 184, - "community_name": "IMediaAssetRepository", + "community_name": "JwtSettings", "file_type": "code", - "norm_label": "guid", + "norm_label": "iclock", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_data_repository_mediaassetrepository_cs_task", - "label": "Task", + "id": "src_anichron_api_security_jwtfactory_cs_iguidfactory", + "label": "IGuidFactory", "_origin": "ast", "community": 184, - "community_name": "IMediaAssetRepository", + "community_name": "JwtSettings", "file_type": "code", - "norm_label": "task", + "norm_label": "iguidfactory", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_api_settings_jwtsettings", + "label": "JwtSettings.cs", + "_origin": "ast", + "community": 184, + "community_name": "JwtSettings", + "file_type": "code", + "norm_label": "jwtsettings.cs", + "source_file": "src/Anichron.API/Settings/JwtSettings.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_accesstokenminutes", + "label": "AccessTokenMinutes", + "_origin": "ast", + "community": 184, + "community_name": "JwtSettings", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "accesstokenminutes", + "source_file": "src/Anichron.API/Settings/JwtSettings.cs", + "source_location": "L8" + }, + { + "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_audience", + "label": "Audience", + "_origin": "ast", + "community": 184, + "community_name": "JwtSettings", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "audience", + "source_file": "src/Anichron.API/Settings/JwtSettings.cs", + "source_location": "L7" + }, + { + "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_issuer", + "label": "Issuer", + "_origin": "ast", + "community": 184, + "community_name": "JwtSettings", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "issuer", + "source_file": "src/Anichron.API/Settings/JwtSettings.cs", + "source_location": "L6" + }, + { + "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_refreshtokendays", + "label": "RefreshTokenDays", + "_origin": "ast", + "community": 184, + "community_name": "JwtSettings", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "refreshtokendays", + "source_file": "src/Anichron.API/Settings/JwtSettings.cs", + "source_location": "L9" + }, + { + "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_secret", + "label": "Secret", + "_origin": "ast", + "community": 184, + "community_name": "JwtSettings", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "secret", + "source_file": "src/Anichron.API/Settings/JwtSettings.cs", + "source_location": "L5" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_xunit_analyzers", "label": "xunit.analyzers", @@ -46489,48 +46725,140 @@ "source_location": "L605" }, { - "id": "src_anichron_api_packages_lock_microsoft_extensions_dependencyinjection_autoactivation_contenthash", - "label": "contentHash", + "id": "csharp_namespace:16742b72470e0efe", + "label": "Anichron.API.Tests.Unit.Security", "_origin": "ast", "community": 196, - "community_name": "Microsoft.Extensions.DependencyInjection.AutoActivation", + "community_name": "ServiceCollectionExtensions.cs", "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L245" + "metadata": { + "kind": "csharp_namespace", + "namespace": "Anichron.API.Tests.Unit.Security" + }, + "norm_label": "anichron.api.tests.unit.security", + "source_file": "src/Anichron.API.Tests.Unit/Security/JwtFactoryTests.cs", + "source_location": "L9", + "type": "namespace" }, { - "id": "src_anichron_api_packages_lock_microsoft_extensions_dependencyinjection_autoactivation_resolved", - "label": "resolved", + "id": "csharp_namespace:3f7e9ffe1d92df00", + "label": "Anichron.Infrastructure.Tests.Unit.Infrastructure", "_origin": "ast", "community": 196, - "community_name": "Microsoft.Extensions.DependencyInjection.AutoActivation", + "community_name": "ServiceCollectionExtensions.cs", "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L244" + "metadata": { + "kind": "csharp_namespace", + "namespace": "Anichron.Infrastructure.Tests.Unit.Infrastructure" + }, + "norm_label": "anichron.infrastructure.tests.unit.infrastructure", + "source_file": "src/Anichron.Infrastructure.Tests.Unit/Infrastructure/DatabaseConfigurationTests.cs", + "source_location": "L6", + "type": "namespace" }, { - "id": "src_anichron_api_packages_lock_microsoft_extensions_dependencyinjection_autoactivation_type", - "label": "type", + "id": "csharp_namespace:76453e29db54b605", + "label": "Anichron.Infrastructure.Configuration", "_origin": "ast", "community": 196, - "community_name": "Microsoft.Extensions.DependencyInjection.AutoActivation", + "community_name": "ServiceCollectionExtensions.cs", "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L243" + "metadata": { + "kind": "csharp_namespace", + "namespace": "Anichron.Infrastructure.Configuration" + }, + "norm_label": "anichron.infrastructure.configuration", + "source_file": "src/Anichron.Infrastructure/Configuration/AppIniInitializer.cs", + "source_location": "L6", + "type": "namespace" }, { - "id": "src_anichron_api_packages_lock_net10_0_microsoft_extensions_dependencyinjection_autoactivation", - "label": "Microsoft.Extensions.DependencyInjection.AutoActivation", + "id": "src_anichron_api_infrastructure_servicecollectionextensions", + "label": "ServiceCollectionExtensions.cs", "_origin": "ast", "community": 196, - "community_name": "Microsoft.Extensions.DependencyInjection.AutoActivation", + "community_name": "ServiceCollectionExtensions.cs", "file_type": "code", - "norm_label": "microsoft.extensions.dependencyinjection.autoactivation", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L242" + "norm_label": "servicecollectionextensions.cs", + "source_file": "src/Anichron.API/Infrastructure/ServiceCollectionExtensions.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_api_infrastructure_webapplicationbuilderextensions", + "label": "WebApplicationBuilderExtensions.cs", + "_origin": "ast", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", + "file_type": "code", + "norm_label": "webapplicationbuilderextensions.cs", + "source_file": "src/Anichron.API/Infrastructure/WebApplicationBuilderExtensions.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_api_security_jwtfactory", + "label": "JwtFactory.cs", + "_origin": "ast", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", + "file_type": "code", + "norm_label": "jwtfactory.cs", + "source_file": "src/Anichron.API/Security/JwtFactory.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_api_security_passwordhasher", + "label": "PasswordHasher.cs", + "_origin": "ast", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", + "file_type": "code", + "norm_label": "passwordhasher.cs", + "source_file": "src/Anichron.API/Security/PasswordHasher.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_api_tests_unit_security_jwtfactorytests", + "label": "JwtFactoryTests.cs", + "_origin": "ast", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", + "file_type": "code", + "norm_label": "jwtfactorytests.cs", + "source_file": "src/Anichron.API.Tests.Unit/Security/JwtFactoryTests.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_infrastructure_configuration_appiniinitializer", + "label": "AppIniInitializer.cs", + "_origin": "ast", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", + "file_type": "code", + "norm_label": "appiniinitializer.cs", + "source_file": "src/Anichron.Infrastructure/Configuration/AppIniInitializer.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_infrastructure_configuration_databaseconfiguration", + "label": "DatabaseConfiguration.cs", + "_origin": "ast", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", + "file_type": "code", + "norm_label": "databaseconfiguration.cs", + "source_file": "src/Anichron.Infrastructure/Configuration/DatabaseConfiguration.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_infrastructure_tests_unit_infrastructure_databaseconfigurationtests", + "label": "DatabaseConfigurationTests.cs", + "_origin": "ast", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", + "file_type": "code", + "norm_label": "databaseconfigurationtests.cs", + "source_file": "src/Anichron.Infrastructure.Tests.Unit/Infrastructure/DatabaseConfigurationTests.cs", + "source_location": "L1" }, { "id": "src_anichron_api_tests_unit_packages_lock_dependencies_testableio_system_io_abstractions_testinghelpers", @@ -46875,57 +47203,6 @@ "source_file": "src/Anichron.API/Services/AuthService.cs", "source_location": "L18" }, - { - "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy_invalidformatmessage", - "label": "InvalidFormatMessage", - "_origin": "ast", - "community": 2, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s39" - ] - }, - "norm_label": "invalidformatmessage", - "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", - "source_location": "L13" - }, - { - "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy_maxlength", - "label": "MaxLength", - "_origin": "ast", - "community": 2, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s39" - ] - }, - "norm_label": "maxlength", - "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", - "source_location": "L8" - }, - { - "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy_minlength", - "label": "MinLength", - "_origin": "ast", - "community": 2, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s39" - ] - }, - "norm_label": "minlength", - "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", - "source_location": "L7" - }, { "id": "idirectory", "label": "IDirectory", @@ -46959,17 +47236,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_infrastructure_configuration_appiniinitializer", - "label": "AppIniInitializer.cs", - "_origin": "ast", - "community": 20, - "community_name": "AppIniInitializer", - "file_type": "code", - "norm_label": "appiniinitializer.cs", - "source_file": "src/Anichron.Infrastructure/Configuration/AppIniInitializer.cs", - "source_location": "L1" - }, { "id": "src_anichron_infrastructure_configuration_appiniinitializer_cs_func", "label": "Func", @@ -47891,23 +48157,12 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L15" }, - { - "id": "src_anichron_api_endpoints_authendpoints", - "label": "AuthEndpoints.cs", - "_origin": "ast", - "community": 21, - "community_name": "AuthTokens", - "file_type": "code", - "norm_label": "authendpoints.cs", - "source_file": "src/Anichron.API/Endpoints/AuthEndpoints.cs", - "source_location": "L1" - }, { "id": "src_anichron_api_endpoints_authendpoints_cs_cancellationtoken", "label": "CancellationToken", "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -47918,7 +48173,7 @@ "label": "HttpContext", "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "norm_label": "httpcontext", "source_file": "", @@ -47929,7 +48184,7 @@ "label": "IEndpointRouteBuilder", "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "norm_label": "iendpointroutebuilder", "source_file": "", @@ -47940,7 +48195,7 @@ "label": "IOptions", "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "norm_label": "ioptions", "source_file": "", @@ -47951,7 +48206,7 @@ "label": "IResult", "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "norm_label": "iresult", "source_file": "", @@ -47962,18 +48217,69 @@ "label": "Task", "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy_invalidformatmessage", + "label": "InvalidFormatMessage", + "_origin": "ast", + "community": 21, + "community_name": ".Ok", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s39" + ] + }, + "norm_label": "invalidformatmessage", + "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", + "source_location": "L13" + }, + { + "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy_maxlength", + "label": "MaxLength", + "_origin": "ast", + "community": 21, + "community_name": ".Ok", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s39" + ] + }, + "norm_label": "maxlength", + "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", + "source_location": "L8" + }, + { + "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy_minlength", + "label": "MinLength", + "_origin": "ast", + "community": 21, + "community_name": ".Ok", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s39" + ] + }, + "norm_label": "minlength", + "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", + "source_location": "L7" + }, { "id": "src_anichron_api_tests_unit_endpoints_authendpointstests_cs_cancellationtoken", "label": "CancellationToken", "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -47984,7 +48290,7 @@ "label": "DefaultHttpContext", "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "norm_label": "defaulthttpcontext", "source_file": "", @@ -47995,7 +48301,7 @@ "label": "Fact", "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "norm_label": "fact", "source_file": "", @@ -48006,7 +48312,7 @@ "label": "HttpContext", "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "norm_label": "httpcontext", "source_file": "", @@ -48017,7 +48323,7 @@ "label": "IStatusCodeHttpResult", "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "norm_label": "istatuscodehttpresult", "source_file": "", @@ -48028,7 +48334,7 @@ "label": "Task", "_origin": "ast", "community": 21, - "community_name": "AuthTokens", + "community_name": ".Ok", "file_type": "code", "norm_label": "task", "source_file": "", @@ -49031,17 +49337,6 @@ "source_file": "src/Anichron.Worker/Settings/WorkerSettings.cs", "source_location": "L42" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_cs_ilogger", - "label": "ILogger", - "_origin": "ast", - "community": 22, - "community_name": "WorkerSettings", - "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_tests_unit_settings_workersettingsvalidatortests", "label": "WorkerSettingsValidatorTests.cs", @@ -49053,28 +49348,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Settings/WorkerSettingsValidatorTests.cs", "source_location": "L1" }, - { - "id": "src_anichron_worker_tests_unit_settings_workersettingsvalidatortests_cs_ireadonlylist", - "label": "IReadOnlyList", - "_origin": "ast", - "community": 22, - "community_name": "WorkerSettings", - "file_type": "code", - "norm_label": "ireadonlylist", - "source_file": "", - "source_location": "" - }, - { - "id": "validationresult", - "label": "ValidationResult", - "_origin": "ast", - "community": 22, - "community_name": "WorkerSettings", - "file_type": "code", - "norm_label": "validationresult", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_api_packages_lock_dependencies_system_codedom", "label": "System.CodeDom", @@ -49405,155 +49678,59 @@ "source_location": "L555" }, { - "id": "src_anichron_core_domain_proxytype", - "label": "ProxyType.cs", + "id": "src_anichron_api_services_lockoutservice_cs_cancellationtoken", + "label": "CancellationToken", "_origin": "ast", "community": 224, - "community_name": "Schema documentation is generated, and its rationale lives in the schema", + "community_name": "LockoutService", "file_type": "code", - "norm_label": "proxytype.cs", - "source_file": "src/Anichron.Core/Domain/ProxyType.cs", - "source_location": "L1" + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_domain_proxytype_anichron_core_domain_proxytype_blurhash", - "label": "BlurHash", + "id": "src_anichron_api_services_lockoutservice_cs_instant", + "label": "Instant", "_origin": "ast", "community": 224, - "community_name": "Schema documentation is generated, and its rationale lives in the schema", + "community_name": "LockoutService", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "blurhash", - "source_file": "src/Anichron.Core/Domain/ProxyType.cs", - "source_location": "L15" + "norm_label": "instant", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_domain_proxytype_anichron_core_domain_proxytype_fullpreview", - "label": "FullPreview", + "id": "src_anichron_api_services_lockoutservice_cs_task", + "label": "Task", "_origin": "ast", "community": 224, - "community_name": "Schema documentation is generated, and its rationale lives in the schema", + "community_name": "LockoutService", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "fullpreview", - "source_file": "src/Anichron.Core/Domain/ProxyType.cs", - "source_location": "L12" + "norm_label": "task", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_domain_proxytype_anichron_core_domain_proxytype_thumbnail", - "label": "Thumbnail", + "id": "src_anichron_api_tests_unit_services_lockoutservicetests_cs_inlinedata", + "label": "InlineData", "_origin": "ast", "community": 224, - "community_name": "Schema documentation is generated, and its rationale lives in the schema", + "community_name": "LockoutService", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "thumbnail", - "source_file": "src/Anichron.Core/Domain/ProxyType.cs", - "source_location": "L6" + "norm_label": "inlinedata", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_domain_proxytype_anichron_core_domain_proxytype_webvideo", - "label": "WebVideo", + "id": "src_anichron_api_tests_unit_services_lockoutservicetests_cs_theory", + "label": "Theory", "_origin": "ast", "community": 224, - "community_name": "Schema documentation is generated, and its rationale lives in the schema", + "community_name": "LockoutService", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "webvideo", - "source_file": "src/Anichron.Core/Domain/ProxyType.cs", - "source_location": "L9" - }, - { - "id": "docs_adr_0004_schema_documentation", - "label": "0004-schema-documentation.md", - "_origin": "ast", - "community": 224, - "community_name": "Schema documentation is generated, and its rationale lives in the schema", - "file_type": "document", - "node_kind": "page", - "norm_label": "0004-schema-documentation.md", - "source_file": "docs/adr/0004-schema-documentation.md", - "source_location": "L1" - }, - { - "id": "docs_adr_0004_schema_documentation_consequences", - "label": "Consequences", - "_origin": "ast", - "community": 224, - "community_name": "Schema documentation is generated, and its rationale lives in the schema", - "file_type": "document", - "node_kind": "heading", - "norm_label": "consequences", - "source_file": "docs/adr/0004-schema-documentation.md", - "source_location": "L61" - }, - { - "id": "docs_adr_0004_schema_documentation_schema_documentation_is_generated_and_its_rationale_lives_in_the_schema", - "label": "Schema documentation is generated, and its rationale lives in the schema", - "_origin": "ast", - "community": 224, - "community_name": "Schema documentation is generated, and its rationale lives in the schema", - "file_type": "document", - "node_kind": "heading", - "norm_label": "schema documentation is generated, and its rationale lives in the schema", - "source_file": "docs/adr/0004-schema-documentation.md", - "source_location": "L1" - }, - { - "id": "docs_adr_0004_schema_documentation_what_went_wrong_which_is_the_only_reason_to_take_this_decision", - "label": "What went wrong, which is the only reason to take this decision", - "_origin": "ast", - "community": 224, - "community_name": "Schema documentation is generated, and its rationale lives in the schema", - "file_type": "document", - "node_kind": "heading", - "norm_label": "what went wrong, which is the only reason to take this decision", - "source_file": "docs/adr/0004-schema-documentation.md", - "source_location": "L14" - }, - { - "id": "docs_adr_0004_schema_documentation_why_not_simply_generate_a_nicer_document", - "label": "Why not simply generate a nicer document", - "_origin": "ast", - "community": 224, - "community_name": "Schema documentation is generated, and its rationale lives in the schema", - "file_type": "document", - "node_kind": "heading", - "norm_label": "why not simply generate a nicer document", - "source_file": "docs/adr/0004-schema-documentation.md", - "source_location": "L32" - }, - { - "id": "docs_adr_0004_schema_documentation_why_the_rationale_goes_in_comment_not_in_markdown", - "label": "Why the rationale goes in `COMMENT`, not in Markdown", - "_origin": "ast", - "community": 224, - "community_name": "Schema documentation is generated, and its rationale lives in the schema", - "file_type": "document", - "node_kind": "heading", - "norm_label": "why the rationale goes in `comment`, not in markdown", - "source_file": "docs/adr/0004-schema-documentation.md", - "source_location": "L42" + "norm_label": "theory", + "source_file": "", + "source_location": "" }, { "id": "src_anichron_core_packages_lock_dependencies_system_codedom", @@ -49985,49 +50162,201 @@ "source_location": "L159" }, { - "id": "src_anichron_worker_ingestion_proxy_processlauncher", - "label": "ProcessLauncher.cs", + "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_cancellationtoken", + "label": "CancellationToken", "_origin": "ast", "community": 231, - "community_name": ".RunAsync", + "community_name": "RefreshToken", "file_type": "code", - "norm_label": "processlauncher.cs", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProcessLauncher.cs", - "source_location": "L1" + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_processlauncher_cs_cancellationtoken", - "label": "CancellationToken", + "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_guid", + "label": "Guid", "_origin": "ast", "community": 231, - "community_name": ".RunAsync", + "community_name": "RefreshToken", "file_type": "code", - "norm_label": "cancellationtoken", + "norm_label": "guid", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_processlauncher_cs_ireadonlylist", - "label": "IReadOnlyList", + "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_instant", + "label": "Instant", "_origin": "ast", "community": 231, - "community_name": ".RunAsync", + "community_name": "RefreshToken", "file_type": "code", - "norm_label": "ireadonlylist", + "norm_label": "instant", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_processlauncher_cs_task", + "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_task", "label": "Task", "_origin": "ast", "community": 231, - "community_name": ".RunAsync", + "community_name": "RefreshToken", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_core_domain_refreshtoken", + "label": "RefreshToken.cs", + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "norm_label": "refreshtoken.cs", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_createdat", + "label": "CreatedAt", + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "createdat", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L8" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_expiresat", + "label": "ExpiresAt", + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "expiresat", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L9" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_id", + "label": "Id", + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "id", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L5" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_revokedat", + "label": "RevokedAt", + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "revokedat", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L10" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_tokenhash", + "label": "TokenHash", + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "tokenhash", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L7" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_user", + "label": "User", + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "user", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L12" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_userid", + "label": "UserId", + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "userid", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L6" + }, + { + "id": "src_anichron_core_domain_refreshtoken_cs_guid", + "label": "Guid", + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_domain_refreshtoken_cs_instant", + "label": "Instant", + "_origin": "ast", + "community": 231, + "community_name": "RefreshToken", + "file_type": "code", + "norm_label": "instant", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_packages_lock_dependencies_system_codedom", "label": "System.CodeDom", @@ -50684,104 +51013,109 @@ "source_location": "" }, { - "id": "samesitemode", - "label": "SameSiteMode", + "id": "src_anichron_api_services_adminuserservice_cs_cancellationtoken", + "label": "CancellationToken", "_origin": "ast", "community": 240, - "community_name": "AuthCookieSettings", + "community_name": ".DeleteAsync", "file_type": "code", - "norm_label": "samesitemode", + "norm_label": "cancellationtoken", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_settings_authcookiesettings", - "label": "AuthCookieSettings.cs", + "id": "src_anichron_api_services_adminuserservice_cs_guid", + "label": "Guid", "_origin": "ast", "community": 240, - "community_name": "AuthCookieSettings", + "community_name": ".DeleteAsync", "file_type": "code", - "norm_label": "authcookiesettings.cs", - "source_file": "src/Anichron.API/Settings/AuthCookieSettings.cs", - "source_location": "L1" + "norm_label": "guid", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_api_settings_authcookiesettings_anichron_api_settings_authcookiesettings_refreshtokendays", - "label": "RefreshTokenDays", + "id": "src_anichron_api_services_adminuserservice_cs_iclock", + "label": "IClock", "_origin": "ast", "community": 240, - "community_name": "AuthCookieSettings", + "community_name": ".DeleteAsync", "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "refreshtokendays", - "source_file": "src/Anichron.API/Settings/AuthCookieSettings.cs", - "source_location": "L6" + "norm_label": "iclock", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_api_settings_authcookiesettings_anichron_api_settings_authcookiesettings_samesite", - "label": "SameSite", + "id": "src_anichron_api_services_adminuserservice_cs_list", + "label": "List", "_origin": "ast", "community": 240, - "community_name": "AuthCookieSettings", + "community_name": ".DeleteAsync", "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "samesite", - "source_file": "src/Anichron.API/Settings/AuthCookieSettings.cs", - "source_location": "L5" + "norm_label": "list", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_api_packages_lock_net10_0_polly_core", - "label": "Polly.Core", + "id": "src_anichron_api_services_adminuserservice_cs_task", + "label": "Task", + "_origin": "ast", + "community": 240, + "community_name": ".DeleteAsync", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_domain_mediaasset_anichron_core_domain_mediaasset_mediatype", + "label": "MediaType", "_origin": "ast", "community": 241, - "community_name": "Polly.Core", + "community_name": "MediaType", "file_type": "code", - "norm_label": "polly.core", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L373" + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s3" + ] + }, + "norm_label": "mediatype", + "source_file": "src/Anichron.Core/Domain/MediaAsset.cs", + "source_location": "L26" }, { - "id": "src_anichron_api_packages_lock_polly_core_contenthash", - "label": "contentHash", + "id": "src_anichron_worker_ingestion_mediatypedetector_cs_dictionary", + "label": "Dictionary", "_origin": "ast", "community": 241, - "community_name": "Polly.Core", + "community_name": "MediaType", "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L376" + "norm_label": "dictionary", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_api_packages_lock_polly_core_resolved", - "label": "resolved", + "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests_cs_inlinedata", + "label": "InlineData", "_origin": "ast", "community": 241, - "community_name": "Polly.Core", + "community_name": "MediaType", "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L375" + "norm_label": "inlinedata", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_api_packages_lock_polly_core_type", - "label": "type", + "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests_cs_theory", + "label": "Theory", "_origin": "ast", "community": 241, - "community_name": "Polly.Core", + "community_name": "MediaType", "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L374" + "norm_label": "theory", + "source_file": "", + "source_location": "" }, { "id": "src_anichron_api_packages_lock_humanizer_core_contenthash", @@ -51677,17 +52011,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_cs_fact", - "label": "Fact", - "_origin": "ast", - "community": 25, - "community_name": "SingleFileItem", - "file_type": "code", - "norm_label": "fact", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_netcore_platforms", "label": "Microsoft.NETCore.Platforms", @@ -52909,34 +53232,6 @@ "source_file": "", "source_location": "" }, - { - "id": "ireadonlyset", - "label": "IReadOnlySet", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "ireadonlyset", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_domain_mediaasset_anichron_core_domain_mediaasset_mediatype", - "label": "MediaType", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s3" - ] - }, - "norm_label": "mediatype", - "source_file": "src/Anichron.Core/Domain/MediaAsset.cs", - "source_location": "L26" - }, { "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_cancellationtoken", "label": "CancellationToken", @@ -52948,17 +53243,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_exception", - "label": "Exception", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "exception", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_ifilesystem", "label": "IFileSystem", @@ -52970,17 +53254,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_ilogger", - "label": "ILogger", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_ioptions", "label": "IOptions", @@ -53003,17 +53276,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_loggermessage", - "label": "LoggerMessage", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "loggermessage", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_task", "label": "Task", @@ -53025,83 +53287,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_crawling_worker_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_crawling_worker_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_crawling_worker_cs_ilogger", - "label": "ILogger", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_crawling_worker_cs_ioptions", - "label": "IOptions", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "ioptions", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_crawling_worker_cs_iservicescopefactory", - "label": "IServiceScopeFactory", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "iservicescopefactory", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_crawling_worker_cs_loggermessage", - "label": "LoggerMessage", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "loggermessage", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_crawling_worker_cs_task", - "label": "Task", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_ingestion_ingestionitem_anichron_worker_ingestion_ingestionitem_primarymediatype", "label": "PrimaryMediaType", @@ -53136,116 +53321,6 @@ "source_file": "src/Anichron.Worker/Ingestion/IngestionItem.cs", "source_location": "L13" }, - { - "id": "src_anichron_worker_ingestion_ingestionshutdown", - "label": "IngestionShutdown.cs", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "ingestionshutdown.cs", - "source_file": "src/Anichron.Worker/Ingestion/IngestionShutdown.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_ingestion_ingestionshutdown_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_ingestionshutdown_cs_exception", - "label": "Exception", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "exception", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_livephotolinker_cs_ienumerable", - "label": "IEnumerable", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "ienumerable", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_livephotolinker_cs_ifilesystem", - "label": "IFileSystem", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "ifilesystem", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_livephotolinker_cs_ireadonlylist", - "label": "IReadOnlyList", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "ireadonlylist", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_mediatypedetector_cs_dictionary", - "label": "Dictionary", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "dictionary", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_ilogger", - "label": "ILogger", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests_cs_inlinedata", - "label": "InlineData", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "inlinedata", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests_cs_theory", - "label": "Theory", - "_origin": "ast", - "community": 27, - "community_name": "FileIngestionPipeline", - "file_type": "code", - "norm_label": "theory", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_infrastructure_packages_lock_microsoft_extensions_fileproviders_abstractions_contenthash", "label": "contentHash", @@ -54534,30 +54609,107 @@ "source_location": "L108" }, { - "id": "src_anichron_worker_ingestion_exifdata_anichron_worker_ingestion_exifdata_empty", - "label": "Empty", + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_capturinglogger_entries", + "label": "Entries", "_origin": "ast", "community": 283, - "community_name": "ExifData", + "community_name": "CapturingLogger", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion", + "namespace": "Anichron.Worker.Tests.Unit.Maintenance", "scope_chain": [ - "s17" + "s241" ] }, - "norm_label": "empty", - "source_file": "src/Anichron.Worker/Ingestion/ExifData.cs", - "source_location": "L17" + "norm_label": "entries", + "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", + "source_location": "L91" }, { - "id": "src_anichron_worker_ingestion_exifdata_cs_localdatetime", - "label": "LocalDateTime", + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_eventid", + "label": "EventId", "_origin": "ast", "community": 283, - "community_name": "ExifData", + "community_name": "CapturingLogger", + "file_type": "code", + "norm_label": "eventid", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_exception", + "label": "Exception", + "_origin": "ast", + "community": 283, + "community_name": "CapturingLogger", + "file_type": "code", + "norm_label": "exception", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_func", + "label": "Func", + "_origin": "ast", + "community": 283, + "community_name": "CapturingLogger", + "file_type": "code", + "norm_label": "func", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_idisposable", + "label": "IDisposable", + "_origin": "ast", + "community": 283, + "community_name": "CapturingLogger", + "file_type": "code", + "norm_label": "idisposable", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_ireadonlylist", + "label": "IReadOnlyList", + "_origin": "ast", + "community": 283, + "community_name": "CapturingLogger", + "file_type": "code", + "norm_label": "ireadonlylist", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_level", + "label": "Level", + "_origin": "ast", + "community": 283, + "community_name": "CapturingLogger", + "file_type": "code", + "norm_label": "level", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_list", + "label": "List", + "_origin": "ast", + "community": 283, + "community_name": "CapturingLogger", + "file_type": "code", + "norm_label": "list", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_loglevel", + "label": "LogLevel", + "_origin": "ast", + "community": 283, + "community_name": "CapturingLogger", "file_type": "code", - "norm_label": "localdatetime", + "norm_label": "loglevel", "source_file": "", "source_location": "" }, @@ -54781,12 +54933,95 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L119" }, + { + "id": "iserviceprovider", + "label": "IServiceProvider", + "_origin": "ast", + "community": 288, + "community_name": "IIngestionMiddleware", + "file_type": "code", + "norm_label": "iserviceprovider", + "source_file": "", + "source_location": "" + }, + { + "id": "iservicescope", + "label": "IServiceScope", + "_origin": "ast", + "community": 288, + "community_name": "IIngestionMiddleware", + "file_type": "code", + "norm_label": "iservicescope", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware", + "label": "IIngestionMiddleware.cs", + "_origin": "ast", + "community": 288, + "community_name": "IIngestionMiddleware", + "file_type": "code", + "norm_label": "iingestionmiddleware.cs", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware_order", + "label": "Order", + "_origin": "ast", + "community": 288, + "community_name": "IIngestionMiddleware", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Pipeline", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "order", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", + "source_location": "L7" + }, + { + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 288, + "community_name": "IIngestionMiddleware", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_cs_ingestiondelegate", + "label": "IngestionDelegate", + "_origin": "ast", + "community": 288, + "community_name": "IIngestionMiddleware", + "file_type": "code", + "norm_label": "ingestiondelegate", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_cs_task", + "label": "Task", + "_origin": "ast", + "community": 288, + "community_name": "IIngestionMiddleware", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_ingestion_pipeline_ingestionpipelinerunner_cs_cancellationtoken", "label": "CancellationToken", "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -54797,7 +55032,7 @@ "label": "Exception", "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "norm_label": "exception", "source_file": "", @@ -54808,7 +55043,7 @@ "label": "IEnumerable", "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "norm_label": "ienumerable", "source_file": "", @@ -54819,7 +55054,7 @@ "label": "IFileSystem", "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "norm_label": "ifilesystem", "source_file": "", @@ -54830,7 +55065,7 @@ "label": "ILogger", "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "norm_label": "ilogger", "source_file": "", @@ -54841,7 +55076,7 @@ "label": "IngestionDelegate", "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "norm_label": "ingestiondelegate", "source_file": "", @@ -54852,7 +55087,7 @@ "label": "IOptions", "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "norm_label": "ioptions", "source_file": "", @@ -54863,7 +55098,7 @@ "label": "IReadOnlyList", "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "norm_label": "ireadonlylist", "source_file": "", @@ -54874,7 +55109,7 @@ "label": "LoggerMessage", "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "norm_label": "loggermessage", "source_file": "", @@ -54885,12 +55120,56 @@ "label": "Task", "_origin": "ast", "community": 288, - "community_name": "IngestionPipelineRunner", + "community_name": "IIngestionMiddleware", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_guid", + "label": "Guid", + "_origin": "ast", + "community": 288, + "community_name": "IIngestionMiddleware", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_ienumerable", + "label": "IEnumerable", + "_origin": "ast", + "community": 288, + "community_name": "IIngestionMiddleware", + "file_type": "code", + "norm_label": "ienumerable", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_ilogger", + "label": "ILogger", + "_origin": "ast", + "community": 288, + "community_name": "IIngestionMiddleware", + "file_type": "code", + "norm_label": "ilogger", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_iservicescopefactory", + "label": "IServiceScopeFactory", + "_origin": "ast", + "community": 288, + "community_name": "IIngestionMiddleware", + "file_type": "code", + "norm_label": "iservicescopefactory", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_dependencyinjection_contenthash", "label": "contentHash", @@ -54935,6 +55214,94 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L209" }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_abstractions_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 289, + "community_name": "Microsoft.Extensions.DependencyInjection", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L288" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_abstractions_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 289, + "community_name": "Microsoft.Extensions.DependencyInjection", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L289" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_abstractions_resolved", + "label": "resolved", + "_origin": "ast", + "community": 289, + "community_name": "Microsoft.Extensions.DependencyInjection", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L287" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_abstractions_type", + "label": "type", + "_origin": "ast", + "community": 289, + "community_name": "Microsoft.Extensions.DependencyInjection", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L286" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 289, + "community_name": "Microsoft.Extensions.DependencyInjection", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L357" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 289, + "community_name": "Microsoft.Extensions.DependencyInjection", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L358" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_resolved", + "label": "resolved", + "_origin": "ast", + "community": 289, + "community_name": "Microsoft.Extensions.DependencyInjection", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L356" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_type", + "label": "type", + "_origin": "ast", + "community": 289, + "community_name": "Microsoft.Extensions.DependencyInjection", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L355" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_dependencyinjection", "label": "Microsoft.Extensions.DependencyInjection", @@ -54946,6 +55313,28 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L208" }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_abstractions", + "label": "Microsoft.Extensions.Logging.Abstractions", + "_origin": "ast", + "community": 289, + "community_name": "Microsoft.Extensions.DependencyInjection", + "file_type": "code", + "norm_label": "microsoft.extensions.logging.abstractions", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L285" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_options", + "label": "Microsoft.Extensions.Options", + "_origin": "ast", + "community": 289, + "community_name": "Microsoft.Extensions.DependencyInjection", + "file_type": "code", + "norm_label": "microsoft.extensions.options", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L354" + }, { "id": "src_anichron_api_tests_unit_services_bootstrapresetservicetests_anichron_api_tests_unit_services_testfixture_unitofwork", "label": "UnitOfWork", @@ -55185,59 +55574,48 @@ "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 291, - "community_name": "Microsoft.VisualStudio.Threading.Analyzers", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L31" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_requested", - "label": "requested", + "id": "ireadonlyset", + "label": "IReadOnlySet", "_origin": "ast", "community": 291, - "community_name": "Microsoft.VisualStudio.Threading.Analyzers", + "community_name": "LivePhotoLinker", "file_type": "code", - "norm_label": "requested", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L29" + "norm_label": "ireadonlyset", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_resolved", - "label": "resolved", + "id": "src_anichron_worker_ingestion_livephotolinker_cs_ienumerable", + "label": "IEnumerable", "_origin": "ast", "community": 291, - "community_name": "Microsoft.VisualStudio.Threading.Analyzers", + "community_name": "LivePhotoLinker", "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L30" + "norm_label": "ienumerable", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_type", - "label": "type", + "id": "src_anichron_worker_ingestion_livephotolinker_cs_ifilesystem", + "label": "IFileSystem", "_origin": "ast", "community": 291, - "community_name": "Microsoft.VisualStudio.Threading.Analyzers", + "community_name": "LivePhotoLinker", "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L28" + "norm_label": "ifilesystem", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_visualstudio_threading_analyzers", - "label": "Microsoft.VisualStudio.Threading.Analyzers", + "id": "src_anichron_worker_ingestion_livephotolinker_cs_ireadonlylist", + "label": "IReadOnlyList", "_origin": "ast", "community": 291, - "community_name": "Microsoft.VisualStudio.Threading.Analyzers", + "community_name": "LivePhotoLinker", "file_type": "code", - "norm_label": "microsoft.visualstudio.threading.analyzers", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L27" + "norm_label": "ireadonlylist", + "source_file": "", + "source_location": "" }, { "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_roslynator_analyzers", @@ -55294,6 +55672,138 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L43" }, + { + "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_diagnostics_abstractions", + "label": "Microsoft.Extensions.Diagnostics.Abstractions", + "_origin": "ast", + "community": 293, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.diagnostics.abstractions", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L365" + }, + { + "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_options_configurationextensions", + "label": "Microsoft.Extensions.Options.ConfigurationExtensions", + "_origin": "ast", + "community": 293, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.options.configurationextensions", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L366" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 293, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L362" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 293, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L363" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_resolved", + "label": "resolved", + "_origin": "ast", + "community": 293, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L361" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_type", + "label": "type", + "_origin": "ast", + "community": 293, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L360" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 293, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L404" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 293, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L405" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_resolved", + "label": "resolved", + "_origin": "ast", + "community": 293, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L403" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_type", + "label": "type", + "_origin": "ast", + "community": 293, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L402" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_diagnostics", + "label": "Microsoft.Extensions.Diagnostics", + "_origin": "ast", + "community": 293, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.diagnostics", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L359" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_hosting_abstractions", + "label": "Microsoft.Extensions.Hosting.Abstractions", + "_origin": "ast", + "community": 293, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.hosting.abstractions", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L401" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_contenthash", "label": "contentHash", @@ -55408,6 +55918,61 @@ "source_file": "docs/adr/0003-self-host-mutation-reports.md", "source_location": "L12" }, + { + "id": "src_anichron_core_data_repository_mediaassetrepository", + "label": "MediaAssetRepository.cs", + "_origin": "ast", + "community": 296, + "community_name": "IMediaAssetRepository", + "file_type": "code", + "norm_label": "mediaassetrepository.cs", + "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_core_data_repository_mediaassetrepository_cs_anichrondbcontext", + "label": "AnichronDbContext", + "_origin": "ast", + "community": 296, + "community_name": "IMediaAssetRepository", + "file_type": "code", + "norm_label": "anichrondbcontext", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_data_repository_mediaassetrepository_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 296, + "community_name": "IMediaAssetRepository", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_data_repository_mediaassetrepository_cs_guid", + "label": "Guid", + "_origin": "ast", + "community": 296, + "community_name": "IMediaAssetRepository", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_data_repository_mediaassetrepository_cs_task", + "label": "Task", + "_origin": "ast", + "community": 296, + "community_name": "IMediaAssetRepository", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_packages_lock_net10_0_system_io_hashing", "label": "System.IO.Hashing", @@ -55464,96 +56029,68 @@ "source_location": "L154" }, { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_capturinglogger_entries", - "label": "Entries", - "_origin": "ast", - "community": 299, - "community_name": "CapturingLogger", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", - "scope_chain": [ - "s185" - ] - }, - "norm_label": "entries", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/LoggingMiddlewareTests.cs", - "source_location": "L113" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_eventid", - "label": "EventId", - "_origin": "ast", - "community": 299, - "community_name": "CapturingLogger", - "file_type": "code", - "norm_label": "eventid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_exception", + "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_exception", "label": "Exception", "_origin": "ast", - "community": 299, - "community_name": "CapturingLogger", + "community": 298, + "community_name": ".ItemFailed", "file_type": "code", "norm_label": "exception", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_func", - "label": "Func", + "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_ilogger", + "label": "ILogger", "_origin": "ast", - "community": 299, - "community_name": "CapturingLogger", + "community": 298, + "community_name": ".ItemFailed", "file_type": "code", - "norm_label": "func", + "norm_label": "ilogger", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_idisposable", - "label": "IDisposable", + "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_loggermessage", + "label": "LoggerMessage", "_origin": "ast", - "community": 299, - "community_name": "CapturingLogger", + "community": 298, + "community_name": ".ItemFailed", "file_type": "code", - "norm_label": "idisposable", + "norm_label": "loggermessage", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_ireadonlylist", - "label": "IReadOnlyList", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_eventid", + "label": "EventId", "_origin": "ast", "community": 299, - "community_name": "CapturingLogger", + "community_name": ".Log", "file_type": "code", - "norm_label": "ireadonlylist", + "norm_label": "eventid", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_level", - "label": "Level", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_exception", + "label": "Exception", "_origin": "ast", "community": 299, - "community_name": "CapturingLogger", + "community_name": ".Log", "file_type": "code", - "norm_label": "level", + "norm_label": "exception", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_list", - "label": "List", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_func", + "label": "Func", "_origin": "ast", "community": 299, - "community_name": "CapturingLogger", + "community_name": ".Log", "file_type": "code", - "norm_label": "list", + "norm_label": "func", "source_file": "", "source_location": "" }, @@ -55562,23 +56099,12 @@ "label": "LogLevel", "_origin": "ast", "community": 299, - "community_name": "CapturingLogger", + "community_name": ".Log", "file_type": "code", "norm_label": "loglevel", "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_message", - "label": "Message", - "_origin": "ast", - "community": 299, - "community_name": "CapturingLogger", - "file_type": "code", - "norm_label": "message", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxydirectorycreatingmiddleware_order", "label": "Order", @@ -55613,6 +56139,23 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", "source_location": "L303" }, + { + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_stubmiddleware_order", + "label": "Order", + "_origin": "ast", + "community": 3, + "community_name": "IngestionPipelineRunnerTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", + "scope_chain": [ + "s368" + ] + }, + "norm_label": "order", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", + "source_location": "L288" + }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_testfixture_directorystrategy", "label": "DirectoryStrategy", @@ -55719,6 +56262,17 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_cs_list", + "label": "List", + "_origin": "ast", + "community": 3, + "community_name": "IngestionPipelineRunnerTests", + "file_type": "code", + "norm_label": "list", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_cs_mockfilesystem", "label": "MockFileSystem", @@ -55796,39 +56350,6 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L80" }, - { - "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_diagnostics_abstractions", - "label": "Microsoft.Extensions.Diagnostics.Abstractions", - "_origin": "ast", - "community": 30, - "community_name": "Microsoft.Extensions.Configuration.Abstractions", - "file_type": "code", - "norm_label": "microsoft.extensions.diagnostics.abstractions", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L365" - }, - { - "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_fileproviders_abstractions", - "label": "Microsoft.Extensions.FileProviders.Abstractions", - "_origin": "ast", - "community": 30, - "community_name": "Microsoft.Extensions.Configuration.Abstractions", - "file_type": "code", - "norm_label": "microsoft.extensions.fileproviders.abstractions", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L65" - }, - { - "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_fileproviders_physical", - "label": "Microsoft.Extensions.FileProviders.Physical", - "_origin": "ast", - "community": 30, - "community_name": "Microsoft.Extensions.Configuration.Abstractions", - "file_type": "code", - "norm_label": "microsoft.extensions.fileproviders.physical", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L86" - }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_binder_contenthash", "label": "contentHash", @@ -55962,7 +56483,7 @@ "source_location": "L299" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_contenthash", "label": "contentHash", "_origin": "ast", "community": 30, @@ -55970,10 +56491,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L310" + "source_location": "L60" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_dependencies", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_dependencies", "label": "dependencies", "_origin": "ast", "community": 30, @@ -55981,10 +56502,21 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L311" + "source_location": "L61" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_requested", + "label": "requested", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "requested", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L58" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_resolved", "label": "resolved", "_origin": "ast", "community": 30, @@ -55992,10 +56524,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L309" + "source_location": "L59" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_type", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_type", "label": "type", "_origin": "ast", "community": 30, @@ -56003,591 +56535,966 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L308" + "source_location": "L57" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L322" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L323" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_resolved", + "label": "resolved", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L321" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_type", + "label": "type", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L320" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L333" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L334" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_resolved", + "label": "resolved", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L332" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_type", + "label": "type", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L331" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_binder", + "label": "Microsoft.Extensions.Configuration.Binder", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.binder", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L280" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_commandline", + "label": "Microsoft.Extensions.Configuration.CommandLine", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.commandline", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L289" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_environmentvariables", + "label": "Microsoft.Extensions.Configuration.EnvironmentVariables", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.environmentvariables", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L298" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_ini", + "label": "Microsoft.Extensions.Configuration.Ini", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.ini", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L56" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_json", + "label": "Microsoft.Extensions.Configuration.Json", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.json", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L319" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_usersecrets", + "label": "Microsoft.Extensions.Configuration.UserSecrets", + "_origin": "ast", + "community": 30, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.usersecrets", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L330" + }, + { + "id": "src_anichron_worker_ingestion_ingestionshutdown", + "label": "IngestionShutdown.cs", + "_origin": "ast", + "community": 300, + "community_name": ".IsInProgress", + "file_type": "code", + "norm_label": "ingestionshutdown.cs", + "source_file": "src/Anichron.Worker/Ingestion/IngestionShutdown.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_ingestion_ingestionshutdown_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 300, + "community_name": ".IsInProgress", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_ingestionshutdown_cs_exception", + "label": "Exception", + "_origin": "ast", + "community": 300, + "community_name": ".IsInProgress", + "file_type": "code", + "norm_label": "exception", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_coverlet_collector_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 301, + "community_name": "coverlet.collector", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L9" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_coverlet_collector_requested", + "label": "requested", + "_origin": "ast", + "community": 301, + "community_name": "coverlet.collector", + "file_type": "code", + "norm_label": "requested", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L7" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_coverlet_collector_resolved", + "label": "resolved", + "_origin": "ast", + "community": 301, + "community_name": "coverlet.collector", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L8" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_coverlet_collector_type", + "label": "type", + "_origin": "ast", + "community": 301, + "community_name": "coverlet.collector", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L6" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_coverlet_collector", + "label": "coverlet.collector", + "_origin": "ast", + "community": 301, + "community_name": "coverlet.collector", + "file_type": "code", + "norm_label": "coverlet.collector", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L5" + }, + { + "id": "src_anichron_api_packages_lock_microsoft_identitymodel_abstractions_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 302, + "community_name": "Microsoft.IdentityModel.Abstractions", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L297" + }, + { + "id": "src_anichron_api_packages_lock_microsoft_identitymodel_abstractions_resolved", + "label": "resolved", + "_origin": "ast", + "community": 302, + "community_name": "Microsoft.IdentityModel.Abstractions", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L296" + }, + { + "id": "src_anichron_api_packages_lock_microsoft_identitymodel_abstractions_type", + "label": "type", + "_origin": "ast", + "community": 302, + "community_name": "Microsoft.IdentityModel.Abstractions", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L295" + }, + { + "id": "src_anichron_api_packages_lock_net10_0_microsoft_identitymodel_abstractions", + "label": "Microsoft.IdentityModel.Abstractions", + "_origin": "ast", + "community": 302, + "community_name": "Microsoft.IdentityModel.Abstractions", + "file_type": "code", + "norm_label": "microsoft.identitymodel.abstractions", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L294" + }, + { + "id": "samesitemode", + "label": "SameSiteMode", + "_origin": "ast", + "community": 303, + "community_name": "AuthCookieSettings", + "file_type": "code", + "norm_label": "samesitemode", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_settings_authcookiesettings", + "label": "AuthCookieSettings.cs", + "_origin": "ast", + "community": 303, + "community_name": "AuthCookieSettings", + "file_type": "code", + "norm_label": "authcookiesettings.cs", + "source_file": "src/Anichron.API/Settings/AuthCookieSettings.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_api_settings_authcookiesettings_anichron_api_settings_authcookiesettings_refreshtokendays", + "label": "RefreshTokenDays", + "_origin": "ast", + "community": 303, + "community_name": "AuthCookieSettings", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "refreshtokendays", + "source_file": "src/Anichron.API/Settings/AuthCookieSettings.cs", + "source_location": "L6" + }, + { + "id": "src_anichron_api_settings_authcookiesettings_anichron_api_settings_authcookiesettings_samesite", + "label": "SameSite", + "_origin": "ast", + "community": 303, + "community_name": "AuthCookieSettings", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "samesite", + "source_file": "src/Anichron.API/Settings/AuthCookieSettings.cs", + "source_location": "L5" + }, + { + "id": "src_anichron_api_packages_lock_net10_0_newtonsoft_json", + "label": "Newtonsoft.Json", + "_origin": "ast", + "community": 304, + "community_name": "Newtonsoft.Json", + "file_type": "code", + "norm_label": "newtonsoft.json", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L359" + }, + { + "id": "src_anichron_api_packages_lock_newtonsoft_json_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 304, + "community_name": "Newtonsoft.Json", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L362" + }, + { + "id": "src_anichron_api_packages_lock_newtonsoft_json_resolved", + "label": "resolved", + "_origin": "ast", + "community": 304, + "community_name": "Newtonsoft.Json", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L361" + }, + { + "id": "src_anichron_api_packages_lock_newtonsoft_json_type", + "label": "type", + "_origin": "ast", + "community": 304, + "community_name": "Newtonsoft.Json", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L360" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_contenthash", - "label": "contentHash", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration", + "label": "Microsoft.Extensions.Configuration", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L60" + "norm_label": "microsoft.extensions.configuration", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L152" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration_abstractions", + "label": "Microsoft.Extensions.Configuration.Abstractions", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L61" + "norm_label": "microsoft.extensions.configuration.abstractions", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L153" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_requested", - "label": "requested", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration_fileextensions", + "label": "Microsoft.Extensions.Configuration.FileExtensions", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "requested", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L58" + "norm_label": "microsoft.extensions.configuration.fileextensions", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L193" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_resolved", - "label": "resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration_json", + "label": "Microsoft.Extensions.Configuration.Json", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L59" + "norm_label": "microsoft.extensions.configuration.json", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L203" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_type", - "label": "type", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_diagnostics_abstractions", + "label": "Microsoft.Extensions.Diagnostics.Abstractions", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L57" + "norm_label": "microsoft.extensions.diagnostics.abstractions", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L227" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_contenthash", - "label": "contentHash", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_fileproviders_abstractions", + "label": "Microsoft.Extensions.FileProviders.Abstractions", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L322" + "norm_label": "microsoft.extensions.fileproviders.abstractions", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L181" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_fileproviders_physical", + "label": "Microsoft.Extensions.FileProviders.Physical", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L323" + "norm_label": "microsoft.extensions.fileproviders.physical", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L182" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_resolved", - "label": "resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_filesystemglobbing", + "label": "Microsoft.Extensions.FileSystemGlobbing", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L321" + "norm_label": "microsoft.extensions.filesystemglobbing", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L254" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_type", - "label": "type", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_primitives", + "label": "Microsoft.Extensions.Primitives", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L320" + "norm_label": "microsoft.extensions.primitives", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L124" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_abstractions_contenthash", "label": "contentHash", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L333" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L142" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_abstractions_dependencies", "label": "dependencies", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "dependencies", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L334" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L143" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_abstractions_resolved", "label": "resolved", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L332" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L141" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_abstractions_type", "label": "type", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L331" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L140" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_binder_contenthash", "label": "contentHash", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L362" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L150" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_binder_dependencies", "label": "dependencies", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "dependencies", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L363" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L151" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_binder_resolved", "label": "resolved", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L361" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L149" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_binder_type", "label": "type", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L360" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L148" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_commandline_contenthash", "label": "contentHash", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L404" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L159" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_commandline_dependencies", "label": "dependencies", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "dependencies", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L405" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L160" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_commandline_resolved", "label": "resolved", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L403" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L158" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_commandline_type", "label": "type", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L402" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L157" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_binder", - "label": "Microsoft.Extensions.Configuration.Binder", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_environmentvariables_contenthash", + "label": "contentHash", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.binder", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L280" + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L168" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_commandline", - "label": "Microsoft.Extensions.Configuration.CommandLine", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_environmentvariables_dependencies", + "label": "dependencies", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.commandline", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L289" + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L169" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_environmentvariables", - "label": "Microsoft.Extensions.Configuration.EnvironmentVariables", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_environmentvariables_resolved", + "label": "resolved", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.environmentvariables", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L298" + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L167" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_fileextensions", - "label": "Microsoft.Extensions.Configuration.FileExtensions", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_environmentvariables_type", + "label": "type", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.fileextensions", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L307" + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L166" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_ini", - "label": "Microsoft.Extensions.Configuration.Ini", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_fileextensions_contenthash", + "label": "contentHash", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.ini", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L56" + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L177" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_json", - "label": "Microsoft.Extensions.Configuration.Json", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_fileextensions_dependencies", + "label": "dependencies", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.json", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L319" + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L178" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_usersecrets", - "label": "Microsoft.Extensions.Configuration.UserSecrets", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_fileextensions_resolved", + "label": "resolved", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.usersecrets", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L330" + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L176" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_diagnostics", - "label": "Microsoft.Extensions.Diagnostics", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_fileextensions_type", + "label": "type", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.diagnostics", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L359" + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L175" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_hosting_abstractions", - "label": "Microsoft.Extensions.Hosting.Abstractions", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_json_dependencies", + "label": "dependencies", "_origin": "ast", - "community": 30, + "community": 305, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.hosting.abstractions", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L401" + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L190" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_coverlet_collector_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_contenthash", "label": "contentHash", "_origin": "ast", - "community": 301, - "community_name": "coverlet.collector", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L9" + "source_location": "L200" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_coverlet_collector_requested", - "label": "requested", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_dependencies", + "label": "dependencies", "_origin": "ast", - "community": 301, - "community_name": "coverlet.collector", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "requested", + "norm_label": "dependencies", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L7" + "source_location": "L201" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_coverlet_collector_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_resolved", "label": "resolved", "_origin": "ast", - "community": 301, - "community_name": "coverlet.collector", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L8" + "source_location": "L199" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_coverlet_collector_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_type", "label": "type", "_origin": "ast", - "community": 301, - "community_name": "coverlet.collector", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L6" + "source_location": "L198" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_coverlet_collector", - "label": "coverlet.collector", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_dependencies", + "label": "dependencies", "_origin": "ast", - "community": 301, - "community_name": "coverlet.collector", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "coverlet.collector", + "norm_label": "dependencies", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L5" + "source_location": "L225" }, { - "id": "src_anichron_api_packages_lock_microsoft_identitymodel_abstractions_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_contenthash", "label": "contentHash", "_origin": "ast", - "community": 302, - "community_name": "Microsoft.IdentityModel.Abstractions", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "contenthash", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L297" - }, - { - "id": "src_anichron_api_packages_lock_microsoft_identitymodel_abstractions_resolved", - "label": "resolved", - "_origin": "ast", - "community": 302, - "community_name": "Microsoft.IdentityModel.Abstractions", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L296" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L243" }, { - "id": "src_anichron_api_packages_lock_microsoft_identitymodel_abstractions_type", - "label": "type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_dependencies", + "label": "dependencies", "_origin": "ast", - "community": 302, - "community_name": "Microsoft.IdentityModel.Abstractions", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L295" + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L244" }, { - "id": "src_anichron_api_packages_lock_net10_0_microsoft_identitymodel_abstractions", - "label": "Microsoft.IdentityModel.Abstractions", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_resolved", + "label": "resolved", "_origin": "ast", - "community": 302, - "community_name": "Microsoft.IdentityModel.Abstractions", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "microsoft.identitymodel.abstractions", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L294" + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L242" }, { - "id": "src_anichron_worker_packages_lock_net10_0_roslynator_analyzers", - "label": "Roslynator.Analyzers", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_type", + "label": "type", "_origin": "ast", - "community": 303, - "community_name": "Roslynator.Analyzers", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "roslynator.analyzers", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L125" + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L241" }, { - "id": "src_anichron_worker_packages_lock_roslynator_analyzers_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_contenthash", "label": "contentHash", "_origin": "ast", - "community": 303, - "community_name": "Roslynator.Analyzers", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L129" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L251" }, { - "id": "src_anichron_worker_packages_lock_roslynator_analyzers_requested", - "label": "requested", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_dependencies", + "label": "dependencies", "_origin": "ast", - "community": 303, - "community_name": "Roslynator.Analyzers", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "requested", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L127" + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L252" }, { - "id": "src_anichron_worker_packages_lock_roslynator_analyzers_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_resolved", "label": "resolved", "_origin": "ast", - "community": 303, - "community_name": "Roslynator.Analyzers", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L128" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L250" }, { - "id": "src_anichron_worker_packages_lock_roslynator_analyzers_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_type", "label": "type", "_origin": "ast", - "community": 303, - "community_name": "Roslynator.Analyzers", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L126" - }, - { - "id": "src_anichron_api_packages_lock_net10_0_newtonsoft_json", - "label": "Newtonsoft.Json", - "_origin": "ast", - "community": 304, - "community_name": "Newtonsoft.Json", - "file_type": "code", - "norm_label": "newtonsoft.json", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L359" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L249" }, { - "id": "src_anichron_api_packages_lock_newtonsoft_json_contenthash", - "label": "contentHash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_hosting_abstractions_dependencies", + "label": "dependencies", "_origin": "ast", - "community": 304, - "community_name": "Newtonsoft.Json", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L362" + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L267" }, { - "id": "src_anichron_api_packages_lock_newtonsoft_json_resolved", - "label": "resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_abstractions", + "label": "Microsoft.Extensions.Configuration.Abstractions", "_origin": "ast", - "community": 304, - "community_name": "Newtonsoft.Json", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L361" + "norm_label": "microsoft.extensions.configuration.abstractions", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L139" }, { - "id": "src_anichron_api_packages_lock_newtonsoft_json_type", - "label": "type", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_binder", + "label": "Microsoft.Extensions.Configuration.Binder", "_origin": "ast", - "community": 304, - "community_name": "Newtonsoft.Json", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.API/packages.lock.json", - "source_location": "L360" + "norm_label": "microsoft.extensions.configuration.binder", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L147" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_contenthash", - "label": "contentHash", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_commandline", + "label": "Microsoft.Extensions.Configuration.CommandLine", "_origin": "ast", "community": 305, - "community_name": "Microsoft.Extensions.FileProviders.Abstractions", + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "contenthash", + "norm_label": "microsoft.extensions.configuration.commandline", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L243" + "source_location": "L156" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_environmentvariables", + "label": "Microsoft.Extensions.Configuration.EnvironmentVariables", "_origin": "ast", "community": 305, - "community_name": "Microsoft.Extensions.FileProviders.Abstractions", + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "dependencies", + "norm_label": "microsoft.extensions.configuration.environmentvariables", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L244" + "source_location": "L165" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_resolved", - "label": "resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_fileextensions", + "label": "Microsoft.Extensions.Configuration.FileExtensions", "_origin": "ast", "community": 305, - "community_name": "Microsoft.Extensions.FileProviders.Abstractions", + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "resolved", + "norm_label": "microsoft.extensions.configuration.fileextensions", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L242" + "source_location": "L174" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_type", - "label": "type", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_usersecrets", + "label": "Microsoft.Extensions.Configuration.UserSecrets", "_origin": "ast", "community": 305, - "community_name": "Microsoft.Extensions.FileProviders.Abstractions", + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "type", + "norm_label": "microsoft.extensions.configuration.usersecrets", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L241" + "source_location": "L197" }, { "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_fileproviders_abstractions", "label": "Microsoft.Extensions.FileProviders.Abstractions", "_origin": "ast", "community": 305, - "community_name": "Microsoft.Extensions.FileProviders.Abstractions", + "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", "norm_label": "microsoft.extensions.fileproviders.abstractions", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L240" }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_fileproviders_physical", + "label": "Microsoft.Extensions.FileProviders.Physical", + "_origin": "ast", + "community": 305, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.fileproviders.physical", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L248" + }, { "id": "nuget_microsoft_entityframeworkcore_inmemory", "label": "Microsoft.EntityFrameworkCore.InMemory", @@ -56775,162 +57682,6 @@ "source_file": "src/Anichron.API/packages.lock.json", "source_location": "L147" }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_testfixture_guidfactory", - "label": "GuidFactory", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s121" - ] - }, - "norm_label": "guidfactory", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L14" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_testfixture_storageconfigs", - "label": "StorageConfigs", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s121" - ] - }, - "norm_label": "storageconfigs", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L13" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_testfixture_unitofwork", - "label": "UnitOfWork", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s121" - ] - }, - "norm_label": "unitofwork", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L15" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_testfixture_users", - "label": "Users", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s121" - ] - }, - "norm_label": "users", - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", - "source_location": "L12" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_cs_fact", - "label": "Fact", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "fact", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_cs_iguidfactory", - "label": "IGuidFactory", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "iguidfactory", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_cs_inlinedata", - "label": "InlineData", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "inlinedata", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_cs_task", - "label": "Task", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_cs_theory", - "label": "Theory", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "theory", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_cs_anichrondbcontext", - "label": "AnichronDbContext", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "anichrondbcontext", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_core_data_repository_userstorageconfigrepository_cs_cancellationtoken", "label": "CancellationToken", @@ -57110,301 +57861,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_cs_fact", - "label": "Fact", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "fact", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_cs_task", - "label": "Task", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_testfixture_configrepository", - "label": "ConfigRepository", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Crawling", - "scope_chain": [ - "s306" - ] - }, - "norm_label": "configrepository", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", - "source_location": "L16" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_testfixture_pipeline", - "label": "Pipeline", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Crawling", - "scope_chain": [ - "s306" - ] - }, - "norm_label": "pipeline", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", - "source_location": "L17" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_testfixture_workerstate", - "label": "WorkerState", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Crawling", - "scope_chain": [ - "s306" - ] - }, - "norm_label": "workerstate", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", - "source_location": "L18" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_fact", - "label": "Fact", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "fact", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_iservicescopefactory", - "label": "IServiceScopeFactory", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "iservicescopefactory", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_task", - "label": "Task", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_workerstate", - "label": "WorkerState", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "workerstate", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_storageconfigrepository", - "label": "StorageConfigRepository", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Startup", - "scope_chain": [ - "s307" - ] - }, - "norm_label": "storageconfigrepository", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L18" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_unitofwork", - "label": "UnitOfWork", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Startup", - "scope_chain": [ - "s307" - ] - }, - "norm_label": "unitofwork", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L19" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_userrepository", - "label": "UserRepository", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Startup", - "scope_chain": [ - "s307" - ] - }, - "norm_label": "userrepository", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L17" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_workerstate", - "label": "WorkerState", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Startup", - "scope_chain": [ - "s307" - ] - }, - "norm_label": "workerstate", - "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", - "source_location": "L20" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_fact", - "label": "Fact", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "fact", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_ilogger", - "label": "ILogger", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_invalidoperationexception", - "label": "InvalidOperationException", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "invalidoperationexception", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_iservicescopefactory", - "label": "IServiceScopeFactory", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "iservicescopefactory", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_task", - "label": "Task", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_workerstate", - "label": "WorkerState", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "workerstate", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_api_tests_unit_packages_lock_microsoft_aspnetcore_testhost_contenthash", "label": "contentHash", @@ -57691,6 +58147,50 @@ "source_file": "src/Anichron.API.Tests.Unit/packages.lock.json", "source_location": "L614" }, + { + "id": "src_anichron_api_packages_lock_microsoft_codeanalysis_analyzers_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 317, + "community_name": "Microsoft.CodeAnalysis.Analyzers", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L165" + }, + { + "id": "src_anichron_api_packages_lock_microsoft_codeanalysis_analyzers_resolved", + "label": "resolved", + "_origin": "ast", + "community": 317, + "community_name": "Microsoft.CodeAnalysis.Analyzers", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L164" + }, + { + "id": "src_anichron_api_packages_lock_microsoft_codeanalysis_analyzers_type", + "label": "type", + "_origin": "ast", + "community": 317, + "community_name": "Microsoft.CodeAnalysis.Analyzers", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L163" + }, + { + "id": "src_anichron_api_packages_lock_net10_0_microsoft_codeanalysis_analyzers", + "label": "Microsoft.CodeAnalysis.Analyzers", + "_origin": "ast", + "community": 317, + "community_name": "Microsoft.CodeAnalysis.Analyzers", + "file_type": "code", + "norm_label": "microsoft.codeanalysis.analyzers", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L162" + }, { "id": "src_anichron_api_packages_lock_microsoft_extensions_diagnostics_exceptionsummarization_contenthash", "label": "contentHash", @@ -57736,90 +58236,162 @@ "source_location": "L252" }, { - "id": "iserviceprovider", - "label": "IServiceProvider", + "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_anichron_worker_ingestion_middlewares_imageproxymiddleware_order", + "label": "Order", "_origin": "ast", "community": 319, - "community_name": ".BuildWithMiddlewares", + "community_name": "ImageProxyMiddleware", "file_type": "code", - "norm_label": "iserviceprovider", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Middlewares", + "scope_chain": [ + "s209" + ] + }, + "norm_label": "order", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ImageProxyMiddleware.cs", + "source_location": "L17" + }, + { + "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 319, + "community_name": "ImageProxyMiddleware", + "file_type": "code", + "norm_label": "cancellationtoken", "source_file": "", "source_location": "" }, { - "id": "iservicescope", - "label": "IServiceScope", + "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_ienumerable", + "label": "IEnumerable", "_origin": "ast", "community": 319, - "community_name": ".BuildWithMiddlewares", + "community_name": "ImageProxyMiddleware", "file_type": "code", - "norm_label": "iservicescope", + "norm_label": "ienumerable", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy", - "label": "ProxyShardStrategy.cs", + "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_ifilesystem", + "label": "IFileSystem", "_origin": "ast", "community": 319, - "community_name": ".BuildWithMiddlewares", + "community_name": "ImageProxyMiddleware", "file_type": "code", - "norm_label": "proxyshardstrategy.cs", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", - "source_location": "L1" + "norm_label": "ifilesystem", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_cs_guid", - "label": "Guid", + "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_ilogger", + "label": "ILogger", "_origin": "ast", "community": 319, - "community_name": ".BuildWithMiddlewares", + "community_name": "ImageProxyMiddleware", "file_type": "code", - "norm_label": "guid", + "norm_label": "ilogger", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_guid", - "label": "Guid", + "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_ingestiondelegate", + "label": "IngestionDelegate", "_origin": "ast", "community": 319, - "community_name": ".BuildWithMiddlewares", + "community_name": "ImageProxyMiddleware", "file_type": "code", - "norm_label": "guid", + "norm_label": "ingestiondelegate", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_ienumerable", - "label": "IEnumerable", + "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_loggermessage", + "label": "LoggerMessage", "_origin": "ast", "community": 319, - "community_name": ".BuildWithMiddlewares", + "community_name": "ImageProxyMiddleware", "file_type": "code", - "norm_label": "ienumerable", + "norm_label": "loggermessage", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_ilogger", - "label": "ILogger", + "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_rgba32", + "label": "Rgba32", "_origin": "ast", "community": 319, - "community_name": ".BuildWithMiddlewares", + "community_name": "ImageProxyMiddleware", "file_type": "code", - "norm_label": "ilogger", + "norm_label": "rgba32", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_iservicescopefactory", - "label": "IServiceScopeFactory", + "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_task", + "label": "Task", "_origin": "ast", "community": 319, - "community_name": ".BuildWithMiddlewares", + "community_name": "ImageProxyMiddleware", "file_type": "code", - "norm_label": "iservicescopefactory", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 319, + "community_name": "ImageProxyMiddleware", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_ingestiondelegate", + "label": "IngestionDelegate", + "_origin": "ast", + "community": 319, + "community_name": "ImageProxyMiddleware", + "file_type": "code", + "norm_label": "ingestiondelegate", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_task", + "label": "Task", + "_origin": "ast", + "community": 319, + "community_name": "ImageProxyMiddleware", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy", + "label": "ProxyShardStrategy.cs", + "_origin": "ast", + "community": 319, + "community_name": "ImageProxyMiddleware", + "file_type": "code", + "norm_label": "proxyshardstrategy.cs", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_cs_guid", + "label": "Guid", + "_origin": "ast", + "community": 319, + "community_name": "ImageProxyMiddleware", + "file_type": "code", + "norm_label": "guid", "source_file": "", "source_location": "" }, @@ -57828,12 +58400,46 @@ "label": "Fact", "_origin": "ast", "community": 319, - "community_name": ".BuildWithMiddlewares", + "community_name": "ImageProxyMiddleware", "file_type": "code", "norm_label": "fact", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_testfixture_revokedinsidetransaction", + "label": "RevokedInsideTransaction", + "_origin": "ast", + "community": 32, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Services", + "scope_chain": [ + "s160" + ] + }, + "norm_label": "revokedinsidetransaction", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L23" + }, + { + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_testfixture_savedinsidetransaction", + "label": "SavedInsideTransaction", + "_origin": "ast", + "community": 32, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Services", + "scope_chain": [ + "s160" + ] + }, + "norm_label": "savedinsidetransaction", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L24" + }, { "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_testfixture_tokenservice", "label": "TokenService", @@ -57844,12 +58450,12 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s121" + "s160" ] }, "norm_label": "tokenservice", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L16" + "source_location": "L17" }, { "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_testfixture_unitofwork", @@ -57861,12 +58467,12 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s121" + "s160" ] }, "norm_label": "unitofwork", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L15" + "source_location": "L16" }, { "id": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_testfixture_users", @@ -57878,12 +58484,12 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", "scope_chain": [ - "s121" + "s160" ] }, "norm_label": "users", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L14" + "source_location": "L15" }, { "id": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_cancellationtoken", @@ -57907,6 +58513,17 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_func", + "label": "Func", + "_origin": "ast", + "community": 32, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "func", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_guid", "label": "Guid", @@ -57940,6 +58557,17 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_invalidoperationexception", + "label": "InvalidOperationException", + "_origin": "ast", + "community": 32, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "invalidoperationexception", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_task", "label": "Task", @@ -57952,15 +58580,92 @@ "source_location": "" }, { - "id": "src_anichron_api_infrastructure_authmessages", - "label": "AuthMessages.cs", + "id": "src_anichron_api_packages_lock_microsoft_extensions_dependencyinjection_autoactivation_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 320, + "community_name": "Microsoft.Extensions.DependencyInjection.AutoActivation", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L245" + }, + { + "id": "src_anichron_api_packages_lock_microsoft_extensions_dependencyinjection_autoactivation_resolved", + "label": "resolved", + "_origin": "ast", + "community": 320, + "community_name": "Microsoft.Extensions.DependencyInjection.AutoActivation", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L244" + }, + { + "id": "src_anichron_api_packages_lock_microsoft_extensions_dependencyinjection_autoactivation_type", + "label": "type", + "_origin": "ast", + "community": 320, + "community_name": "Microsoft.Extensions.DependencyInjection.AutoActivation", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L243" + }, + { + "id": "src_anichron_api_packages_lock_net10_0_microsoft_extensions_dependencyinjection_autoactivation", + "label": "Microsoft.Extensions.DependencyInjection.AutoActivation", + "_origin": "ast", + "community": 320, + "community_name": "Microsoft.Extensions.DependencyInjection.AutoActivation", + "file_type": "code", + "norm_label": "microsoft.extensions.dependencyinjection.autoactivation", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L242" + }, + { + "id": "src_anichron_api_packages_lock_net10_0_polly_core", + "label": "Polly.Core", "_origin": "ast", "community": 321, - "community_name": "AuthMessages.cs", + "community_name": "Polly.Core", "file_type": "code", - "norm_label": "authmessages.cs", - "source_file": "src/Anichron.API/Infrastructure/AuthMessages.cs", - "source_location": "L1" + "norm_label": "polly.core", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L373" + }, + { + "id": "src_anichron_api_packages_lock_polly_core_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 321, + "community_name": "Polly.Core", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L376" + }, + { + "id": "src_anichron_api_packages_lock_polly_core_resolved", + "label": "resolved", + "_origin": "ast", + "community": 321, + "community_name": "Polly.Core", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L375" + }, + { + "id": "src_anichron_api_packages_lock_polly_core_type", + "label": "type", + "_origin": "ast", + "community": 321, + "community_name": "Polly.Core", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.API/packages.lock.json", + "source_location": "L374" }, { "id": "scripts_assemble_pages_test", @@ -58207,6 +58912,50 @@ "source_file": "src/Anichron.API.Tests.Unit/packages.lock.json", "source_location": "L258" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_abstractions_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 325, + "community_name": "Microsoft.EntityFrameworkCore.Abstractions", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L245" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_abstractions_resolved", + "label": "resolved", + "_origin": "ast", + "community": 325, + "community_name": "Microsoft.EntityFrameworkCore.Abstractions", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L244" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_abstractions_type", + "label": "type", + "_origin": "ast", + "community": 325, + "community_name": "Microsoft.EntityFrameworkCore.Abstractions", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L243" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_entityframeworkcore_abstractions", + "label": "Microsoft.EntityFrameworkCore.Abstractions", + "_origin": "ast", + "community": 325, + "community_name": "Microsoft.EntityFrameworkCore.Abstractions", + "file_type": "code", + "norm_label": "microsoft.entityframeworkcore.abstractions", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L242" + }, { "id": "src_anichron_api_tests_unit_packages_lock_microsoft_entityframeworkcore_abstractions_contenthash", "label": "contentHash", @@ -58252,146 +59001,136 @@ "source_location": "L127" }, { - "id": "src_anichron_core_data_anichrondbcontext_cs_cancellationtoken", - "label": "CancellationToken", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_abstractions_contenthash", + "label": "contentHash", "_origin": "ast", "community": 327, - "community_name": ".ExecuteInTransactionAsync", + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L352" }, { - "id": "src_anichron_core_data_anichrondbcontext_cs_func", - "label": "Func", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_abstractions_resolved", + "label": "resolved", "_origin": "ast", "community": 327, - "community_name": ".ExecuteInTransactionAsync", + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "func", - "source_file": "", - "source_location": "" + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L351" }, { - "id": "src_anichron_core_data_anichrondbcontext_cs_task", - "label": "Task", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_abstractions_type", + "label": "type", "_origin": "ast", "community": 327, - "community_name": ".ExecuteInTransactionAsync", + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L350" }, { - "id": "csharp_namespace:deacb600b2c1e799", - "label": "Anichron.Worker.Tests.Unit.Ingestion", + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_dependencyinjection_abstractions", + "label": "Microsoft.Extensions.DependencyInjection.Abstractions", + "_origin": "ast", + "community": 327, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.dependencyinjection.abstractions", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L349" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_contenthash", + "label": "contentHash", "_origin": "ast", "community": 328, - "community_name": "MediaTypeDetectorTests.cs", + "community_name": "Microsoft.Extensions.Logging", "file_type": "code", - "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.Worker.Tests.Unit.Ingestion" - }, - "norm_label": "anichron.worker.tests.unit.ingestion", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/ExifDataTests.cs", - "source_location": "L3", - "type": "namespace" + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L416" }, { - "id": "src_anichron_worker_tests_unit_ingestion_exifdatatests", - "label": "ExifDataTests.cs", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_resolved", + "label": "resolved", "_origin": "ast", "community": 328, - "community_name": "MediaTypeDetectorTests.cs", + "community_name": "Microsoft.Extensions.Logging", "file_type": "code", - "norm_label": "exifdatatests.cs", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/ExifDataTests.cs", - "source_location": "L1" + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L415" }, { - "id": "src_anichron_worker_tests_unit_ingestion_exifdatatests_cs_fact", - "label": "Fact", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_type", + "label": "type", "_origin": "ast", "community": 328, - "community_name": "MediaTypeDetectorTests.cs", + "community_name": "Microsoft.Extensions.Logging", "file_type": "code", - "norm_label": "fact", - "source_file": "", - "source_location": "" + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L414" }, { - "id": "src_anichron_worker_tests_unit_ingestion_mediatypedetectortests", - "label": "MediaTypeDetectorTests.cs", + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_logging", + "label": "Microsoft.Extensions.Logging", "_origin": "ast", "community": 328, - "community_name": "MediaTypeDetectorTests.cs", + "community_name": "Microsoft.Extensions.Logging", "file_type": "code", - "norm_label": "mediatypedetectortests.cs", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/MediaTypeDetectorTests.cs", - "source_location": "L1" + "norm_label": "microsoft.extensions.logging", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L413" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_console_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_eventlog_contenthash", "label": "contentHash", "_origin": "ast", "community": 329, - "community_name": "Microsoft.Extensions.Logging.Console", + "community_name": "Microsoft.Extensions.Logging.EventLog", "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L449" + "source_location": "L471" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_console_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_eventlog_resolved", "label": "resolved", "_origin": "ast", "community": 329, - "community_name": "Microsoft.Extensions.Logging.Console", + "community_name": "Microsoft.Extensions.Logging.EventLog", "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L448" + "source_location": "L470" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_console_type", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_eventlog_type", "label": "type", "_origin": "ast", "community": 329, - "community_name": "Microsoft.Extensions.Logging.Console", + "community_name": "Microsoft.Extensions.Logging.EventLog", "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L447" + "source_location": "L469" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_logging_console", - "label": "Microsoft.Extensions.Logging.Console", + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_logging_eventlog", + "label": "Microsoft.Extensions.Logging.EventLog", "_origin": "ast", "community": 329, - "community_name": "Microsoft.Extensions.Logging.Console", + "community_name": "Microsoft.Extensions.Logging.EventLog", "file_type": "code", - "norm_label": "microsoft.extensions.logging.console", + "norm_label": "microsoft.extensions.logging.eventlog", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L446" - }, - { - "id": "csharp_namespace:16742b72470e0efe", - "label": "Anichron.API.Tests.Unit.Security", - "_origin": "ast", - "community": 33, - "community_name": "Anichron.API.Settings", - "file_type": "code", - "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.API.Tests.Unit.Security" - }, - "norm_label": "anichron.api.tests.unit.security", - "source_file": "src/Anichron.API.Tests.Unit/Security/JwtFactoryTests.cs", - "source_location": "L9", - "type": "namespace" + "source_location": "L468" }, { "id": "csharp_namespace:2afce6c2c8cf3b78", @@ -58485,14 +59224,14 @@ "source_location": "L1" }, { - "id": "src_anichron_api_endpoints_authresponsemapper", - "label": "AuthResponseMapper.cs", + "id": "src_anichron_api_endpoints_authendpoints", + "label": "AuthEndpoints.cs", "_origin": "ast", "community": 33, "community_name": "Anichron.API.Settings", "file_type": "code", - "norm_label": "authresponsemapper.cs", - "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", + "norm_label": "authendpoints.cs", + "source_file": "src/Anichron.API/Endpoints/AuthEndpoints.cs", "source_location": "L1" }, { @@ -58517,6 +59256,17 @@ "source_file": "src/Anichron.API/Infrastructure/ApplicationExtensions.cs", "source_location": "L1" }, + { + "id": "src_anichron_api_infrastructure_authmessages", + "label": "AuthMessages.cs", + "_origin": "ast", + "community": 33, + "community_name": "Anichron.API.Settings", + "file_type": "code", + "norm_label": "authmessages.cs", + "source_file": "src/Anichron.API/Infrastructure/AuthMessages.cs", + "source_location": "L1" + }, { "id": "src_anichron_api_infrastructure_authpolicies", "label": "AuthPolicies.cs", @@ -58561,17 +59311,6 @@ "source_file": "src/Anichron.API/Infrastructure/ProxyStorageHealthCheck.cs", "source_location": "L1" }, - { - "id": "src_anichron_api_infrastructure_servicecollectionextensions", - "label": "ServiceCollectionExtensions.cs", - "_origin": "ast", - "community": 33, - "community_name": "Anichron.API.Settings", - "file_type": "code", - "norm_label": "servicecollectionextensions.cs", - "source_file": "src/Anichron.API/Infrastructure/ServiceCollectionExtensions.cs", - "source_location": "L1" - }, { "id": "src_anichron_api_program", "label": "Anichron.API/Program.cs", @@ -58583,28 +59322,6 @@ "source_file": "src/Anichron.API/Program.cs", "source_location": "L1" }, - { - "id": "src_anichron_api_security_jwtfactory", - "label": "JwtFactory.cs", - "_origin": "ast", - "community": 33, - "community_name": "Anichron.API.Settings", - "file_type": "code", - "norm_label": "jwtfactory.cs", - "source_file": "src/Anichron.API/Security/JwtFactory.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_api_security_passwordhasher", - "label": "PasswordHasher.cs", - "_origin": "ast", - "community": 33, - "community_name": "Anichron.API.Settings", - "file_type": "code", - "norm_label": "passwordhasher.cs", - "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L1" - }, { "id": "src_anichron_api_settings_corssettings", "label": "CorsSettings.cs", @@ -58754,28 +59471,6 @@ "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ProxyStorageHealthCheckTests.cs", "source_location": "L1" }, - { - "id": "src_anichron_api_tests_unit_security_jwtfactorytests", - "label": "JwtFactoryTests.cs", - "_origin": "ast", - "community": 33, - "community_name": "Anichron.API.Settings", - "file_type": "code", - "norm_label": "jwtfactorytests.cs", - "source_file": "src/Anichron.API.Tests.Unit/Security/JwtFactoryTests.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_api_tests_unit_security_passwordhashertests", - "label": "PasswordHasherTests.cs", - "_origin": "ast", - "community": 33, - "community_name": "Anichron.API.Settings", - "file_type": "code", - "norm_label": "passwordhashertests.cs", - "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L1" - }, { "id": "src_anichron_api_tests_unit_packages_lock_microsoft_extensions_filesystemglobbing_contenthash", "label": "contentHash", @@ -58821,70 +59516,48 @@ "source_location": "L332" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_analyzers_contenthash", "label": "contentHash", "_origin": "ast", "community": 331, - "community_name": "Castle.Core", + "community_name": "Microsoft.EntityFrameworkCore.Analyzers", "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L89" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_dependencies", - "label": "dependencies", - "_origin": "ast", - "community": 331, - "community_name": "Castle.Core", - "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L90" + "source_location": "L117" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_analyzers_resolved", "label": "resolved", "_origin": "ast", "community": 331, - "community_name": "Castle.Core", + "community_name": "Microsoft.EntityFrameworkCore.Analyzers", "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L88" + "source_location": "L116" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_analyzers_type", "label": "type", "_origin": "ast", "community": 331, - "community_name": "Castle.Core", + "community_name": "Microsoft.EntityFrameworkCore.Analyzers", "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L87" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_system_diagnostics_eventlog", - "label": "System.Diagnostics.EventLog", - "_origin": "ast", - "community": 331, - "community_name": "Castle.Core", - "file_type": "code", - "norm_label": "system.diagnostics.eventlog", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L91" + "source_location": "L115" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_castle_core", - "label": "Castle.Core", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_entityframeworkcore_analyzers", + "label": "Microsoft.EntityFrameworkCore.Analyzers", "_origin": "ast", "community": 331, - "community_name": "Castle.Core", + "community_name": "Microsoft.EntityFrameworkCore.Analyzers", "file_type": "code", - "norm_label": "castle.core", + "norm_label": "microsoft.entityframeworkcore.analyzers", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L86" + "source_location": "L114" }, { "id": "src_anichron_worker_packages_lock_microsoft_visualstudio_solutionpersistence_contenthash", @@ -58975,59 +59648,48 @@ "source_location": "L450" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_abstractions_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_filesystemglobbing_contenthash", "label": "contentHash", "_origin": "ast", "community": 334, - "community_name": "Microsoft.Extensions.Logging.Abstractions", + "community_name": "Microsoft.Extensions.FileSystemGlobbing", "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L288" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_abstractions_dependencies", - "label": "dependencies", - "_origin": "ast", - "community": 334, - "community_name": "Microsoft.Extensions.Logging.Abstractions", - "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L289" + "source_location": "L261" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_abstractions_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_filesystemglobbing_resolved", "label": "resolved", "_origin": "ast", "community": 334, - "community_name": "Microsoft.Extensions.Logging.Abstractions", + "community_name": "Microsoft.Extensions.FileSystemGlobbing", "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L287" + "source_location": "L260" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_abstractions_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_filesystemglobbing_type", "label": "type", "_origin": "ast", "community": 334, - "community_name": "Microsoft.Extensions.Logging.Abstractions", + "community_name": "Microsoft.Extensions.FileSystemGlobbing", "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L286" + "source_location": "L259" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_abstractions", - "label": "Microsoft.Extensions.Logging.Abstractions", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_filesystemglobbing", + "label": "Microsoft.Extensions.FileSystemGlobbing", "_origin": "ast", "community": 334, - "community_name": "Microsoft.Extensions.Logging.Abstractions", + "community_name": "Microsoft.Extensions.FileSystemGlobbing", "file_type": "code", - "norm_label": "microsoft.extensions.logging.abstractions", + "norm_label": "microsoft.extensions.filesystemglobbing", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L285" + "source_location": "L258" }, { "id": "src_anichron_api_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_contenthash", @@ -59074,59 +59736,48 @@ "source_location": "L426" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_xunit_runner_visualstudio", - "label": "xunit.runner.visualstudio", - "_origin": "ast", - "community": 336, - "community_name": "xunit.runner.visualstudio", - "file_type": "code", - "norm_label": "xunit.runner.visualstudio", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L63" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_contenthash", "label": "contentHash", "_origin": "ast", "community": 336, - "community_name": "xunit.runner.visualstudio", + "community_name": "Microsoft.Extensions.Logging.Configuration", "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L67" + "source_location": "L296" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_requested", - "label": "requested", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_resolved", + "label": "resolved", "_origin": "ast", "community": 336, - "community_name": "xunit.runner.visualstudio", + "community_name": "Microsoft.Extensions.Logging.Configuration", "file_type": "code", - "norm_label": "requested", + "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L65" + "source_location": "L295" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_resolved", - "label": "resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_type", + "label": "type", "_origin": "ast", "community": 336, - "community_name": "xunit.runner.visualstudio", + "community_name": "Microsoft.Extensions.Logging.Configuration", "file_type": "code", - "norm_label": "resolved", + "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L66" + "source_location": "L294" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_type", - "label": "type", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_configuration", + "label": "Microsoft.Extensions.Logging.Configuration", "_origin": "ast", "community": 336, - "community_name": "xunit.runner.visualstudio", + "community_name": "Microsoft.Extensions.Logging.Configuration", "file_type": "code", - "norm_label": "type", + "norm_label": "microsoft.extensions.logging.configuration", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L64" + "source_location": "L293" }, { "id": "src_anichron_api_tests_unit_packages_lock_microsoft_openapi_contenthash", @@ -59265,18 +59916,73 @@ "label": "Exception", "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "norm_label": "exception", "source_file": "", "source_location": "" }, + { + "id": "semaphoreslim", + "label": "SemaphoreSlim", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "semaphoreslim", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_proxy_processlauncher", + "label": "ProcessLauncher.cs", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "processlauncher.cs", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProcessLauncher.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_ingestion_proxy_processlauncher_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_proxy_processlauncher_cs_ireadonlylist", + "label": "IReadOnlyList", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "ireadonlylist", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_proxy_processlauncher_cs_task", + "label": "Task", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegexception_exitcode", "label": "ExitCode", "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Proxy", @@ -59293,7 +59999,7 @@ "label": "Stderr", "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Proxy", @@ -59305,12 +60011,123 @@ "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", "source_location": "L125" }, + { + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_cs_ilogger", + "label": "ILogger", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "ilogger", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_cs_ioptions", + "label": "IOptions", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "ioptions", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_cs_loggermessage", + "label": "LoggerMessage", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "loggermessage", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_cs_task", + "label": "Task", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator_filename", + "label": "FileName", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s29" + ] + }, + "norm_label": "filename", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", + "source_location": "L14" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator_proxytype", + "label": "ProxyType", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s29" + ] + }, + "norm_label": "proxytype", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", + "source_location": "L15" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_cs_task", + "label": "Task", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_anichron_worker_tests_unit_ingestion_proxy_testfixture_launcher", "label": "Launcher", "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -59327,7 +60144,7 @@ "label": "CancellationToken", "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -59338,18 +60155,29 @@ "label": "Fact", "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "norm_label": "fact", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_cs_ilogger", + "label": "ILogger", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "ilogger", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_cs_ireadonlylist", "label": "IReadOnlyList", "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", "file_type": "code", "norm_label": "ireadonlylist", "source_file": "", @@ -59360,7 +60188,29 @@ "label": "Task", "_origin": "ast", "community": 34, - "community_name": "FfmpegVideoProcessorTests", + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_cs_fact", + "label": "Fact", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", + "file_type": "code", + "norm_label": "fact", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_cs_task", + "label": "Task", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessor", "file_type": "code", "norm_label": "task", "source_file": "", @@ -59806,73 +60656,12 @@ "source_file": "src/Anichron.Core.Tests.Unit/packages.lock.json", "source_location": "L129" }, - { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware", - "label": "IIngestionMiddleware.cs", - "_origin": "ast", - "community": 35, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "norm_label": "iingestionmiddleware.cs", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware_order", - "label": "Order", - "_origin": "ast", - "community": 35, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Pipeline", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "order", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", - "source_location": "L7" - }, - { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 35, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_cs_ingestiondelegate", - "label": "IngestionDelegate", - "_origin": "ast", - "community": 35, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "norm_label": "ingestiondelegate", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_cs_task", - "label": "Task", - "_origin": "ast", - "community": 35, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_cancellingmiddleware_order", "label": "Order", "_origin": "ast", "community": 35, - "community_name": "IIngestionMiddleware", + "community_name": "CancellingMiddleware", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", @@ -59885,41 +60674,35 @@ "source_location": "L353" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_stubmiddleware_order", - "label": "Order", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_cs_cancellationtoken", + "label": "CancellationToken", "_origin": "ast", "community": 35, - "community_name": "IIngestionMiddleware", + "community_name": "CancellingMiddleware", "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", - "scope_chain": [ - "s368" - ] - }, - "norm_label": "order", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L288" + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_cs_cancellationtokensource", "label": "CancellationTokenSource", "_origin": "ast", "community": 35, - "community_name": "IIngestionMiddleware", + "community_name": "CancellingMiddleware", "file_type": "code", "norm_label": "cancellationtokensource", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_cs_list", - "label": "List", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_cs_ingestiondelegate", + "label": "IngestionDelegate", "_origin": "ast", "community": 35, - "community_name": "IIngestionMiddleware", + "community_name": "CancellingMiddleware", "file_type": "code", - "norm_label": "list", + "norm_label": "ingestiondelegate", "source_file": "", "source_location": "" }, @@ -60395,22 +61178,6 @@ "source_location": "L1", "type": "namespace" }, - { - "id": "csharp_namespace:3f7e9ffe1d92df00", - "label": "Anichron.Infrastructure.Tests.Unit.Infrastructure", - "_origin": "ast", - "community": 36, - "community_name": "Anichron.Core.Domain", - "file_type": "code", - "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.Infrastructure.Tests.Unit.Infrastructure" - }, - "norm_label": "anichron.infrastructure.tests.unit.infrastructure", - "source_file": "src/Anichron.Infrastructure.Tests.Unit/Infrastructure/DatabaseConfigurationTests.cs", - "source_location": "L6", - "type": "namespace" - }, { "id": "csharp_namespace:656805f53b99eab8", "label": "Anichron.Core.Tests.Unit.Data.Repository", @@ -60491,6 +61258,17 @@ "source_location": "L4", "type": "namespace" }, + { + "id": "src_anichron_api_endpoints_authresponsemapper", + "label": "AuthResponseMapper.cs", + "_origin": "ast", + "community": 36, + "community_name": "Anichron.Core.Domain", + "file_type": "code", + "norm_label": "authresponsemapper.cs", + "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", + "source_location": "L1" + }, { "id": "src_anichron_api_security_appclaimtypes", "label": "AppClaimTypes.cs", @@ -60601,6 +61379,17 @@ "source_file": "src/Anichron.API/Services/TokenService.cs", "source_location": "L1" }, + { + "id": "src_anichron_api_tests_unit_security_passwordhashertests", + "label": "PasswordHasherTests.cs", + "_origin": "ast", + "community": 36, + "community_name": "Anichron.Core.Domain", + "file_type": "code", + "norm_label": "passwordhashertests.cs", + "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", + "source_location": "L1" + }, { "id": "src_anichron_api_tests_unit_services_adminresetservicetests", "label": "AdminResetServiceTests.cs", @@ -60733,17 +61522,6 @@ "source_file": "src/Anichron.Core/Data/Repository/InviteRepository.cs", "source_location": "L1" }, - { - "id": "src_anichron_core_data_repository_mediaassetrepository", - "label": "MediaAssetRepository.cs", - "_origin": "ast", - "community": 36, - "community_name": "Anichron.Core.Domain", - "file_type": "code", - "norm_label": "mediaassetrepository.cs", - "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", - "source_location": "L1" - }, { "id": "src_anichron_core_data_repository_refreshtokenrepository", "label": "RefreshTokenRepository.cs", @@ -60832,28 +61610,6 @@ "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", "source_location": "L1" }, - { - "id": "src_anichron_infrastructure_tests_unit_infrastructure_databaseconfigurationtests", - "label": "DatabaseConfigurationTests.cs", - "_origin": "ast", - "community": 36, - "community_name": "Anichron.Core.Domain", - "file_type": "code", - "norm_label": "databaseconfigurationtests.cs", - "source_file": "src/Anichron.Infrastructure.Tests.Unit/Infrastructure/DatabaseConfigurationTests.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_startup_workerinitializer", - "label": "WorkerInitializer.cs", - "_origin": "ast", - "community": 36, - "community_name": "Anichron.Core.Domain", - "file_type": "code", - "norm_label": "workerinitializer.cs", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L1" - }, { "id": "src_anichron_infrastructure_tests_unit_packages_lock_microsoft_entityframeworkcore_analyzers_contenthash", "label": "contentHash", @@ -61223,48 +61979,48 @@ "source_location": "L172" }, { - "id": "src_anichron_worker_packages_lock_net10_0_system_codedom", - "label": "System.CodeDom", - "_origin": "ast", - "community": 368, - "community_name": "System.CodeDom", - "file_type": "code", - "norm_label": "system.codedom", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L558" - }, - { - "id": "src_anichron_worker_packages_lock_system_codedom_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_netcore_platforms_contenthash", "label": "contentHash", "_origin": "ast", "community": 368, - "community_name": "System.CodeDom", + "community_name": "Microsoft.NETCore.Platforms", "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L561" + "source_location": "L521" }, { - "id": "src_anichron_worker_packages_lock_system_codedom_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_netcore_platforms_resolved", "label": "resolved", "_origin": "ast", "community": 368, - "community_name": "System.CodeDom", + "community_name": "Microsoft.NETCore.Platforms", "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L560" + "source_location": "L520" }, { - "id": "src_anichron_worker_packages_lock_system_codedom_type", + "id": "src_anichron_worker_packages_lock_microsoft_netcore_platforms_type", "label": "type", "_origin": "ast", "community": 368, - "community_name": "System.CodeDom", + "community_name": "Microsoft.NETCore.Platforms", "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L559" + "source_location": "L519" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_netcore_platforms", + "label": "Microsoft.NETCore.Platforms", + "_origin": "ast", + "community": 368, + "community_name": "Microsoft.NETCore.Platforms", + "file_type": "code", + "norm_label": "microsoft.netcore.platforms", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L518" }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencymodel_contenthash", @@ -61591,70 +62347,59 @@ "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_cs_cancellationtoken", - "label": "CancellationToken", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_cs_fact", + "label": "Fact", "_origin": "ast", "community": 37, "community_name": "IngestionContext", "file_type": "code", - "norm_label": "cancellationtoken", + "norm_label": "fact", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_cs_ingestiondelegate", - "label": "IngestionDelegate", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_testably_abstractions_filesystem_interface", + "label": "Testably.Abstractions.FileSystem.Interface", "_origin": "ast", - "community": 37, - "community_name": "IngestionContext", + "community": 370, + "community_name": "Testably.Abstractions.FileSystem.Interface", "file_type": "code", - "norm_label": "ingestiondelegate", - "source_file": "", - "source_location": "" + "norm_label": "testably.abstractions.filesystem.interface", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L486" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_codecoverage_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_testably_abstractions_filesystem_interface_contenthash", "label": "contentHash", "_origin": "ast", "community": 370, - "community_name": "Microsoft.CodeCoverage", + "community_name": "Testably.Abstractions.FileSystem.Interface", "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L107" + "source_location": "L489" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_codecoverage_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_testably_abstractions_filesystem_interface_resolved", "label": "resolved", "_origin": "ast", "community": 370, - "community_name": "Microsoft.CodeCoverage", + "community_name": "Testably.Abstractions.FileSystem.Interface", "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L106" + "source_location": "L488" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_codecoverage_type", + "id": "src_anichron_worker_tests_unit_packages_lock_testably_abstractions_filesystem_interface_type", "label": "type", "_origin": "ast", "community": 370, - "community_name": "Microsoft.CodeCoverage", + "community_name": "Testably.Abstractions.FileSystem.Interface", "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L105" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_codecoverage", - "label": "Microsoft.CodeCoverage", - "_origin": "ast", - "community": 370, - "community_name": "Microsoft.CodeCoverage", - "file_type": "code", - "norm_label": "microsoft.codecoverage", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L104" + "source_location": "L487" }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_bcl_asyncinterfaces_contenthash", @@ -61701,180 +62446,32 @@ "source_location": "L99" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 372, - "community_name": "Microsoft.Extensions.Caching.Memory", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L130" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_resolved", - "label": "resolved", - "_origin": "ast", - "community": 372, - "community_name": "Microsoft.Extensions.Caching.Memory", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L129" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_type", - "label": "type", + "id": "src_anichron_worker_ingestion_exifdata_anichron_worker_ingestion_exifdata_empty", + "label": "Empty", "_origin": "ast", "community": 372, - "community_name": "Microsoft.Extensions.Caching.Memory", + "community_name": "ExifData", "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L128" + "metadata": { + "namespace": "Anichron.Worker.Ingestion", + "scope_chain": [ + "s17" + ] + }, + "norm_label": "empty", + "source_file": "src/Anichron.Worker/Ingestion/ExifData.cs", + "source_location": "L17" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_caching_memory", - "label": "Microsoft.Extensions.Caching.Memory", + "id": "src_anichron_worker_ingestion_exifdata_cs_localdatetime", + "label": "LocalDateTime", "_origin": "ast", "community": 372, - "community_name": "Microsoft.Extensions.Caching.Memory", - "file_type": "code", - "norm_label": "microsoft.extensions.caching.memory", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L127" - }, - { - "id": "src_anichron_worker_packages_lock_humanizer_core_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 373, - "community_name": "Humanizer.Core", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L170" - }, - { - "id": "src_anichron_worker_packages_lock_humanizer_core_resolved", - "label": "resolved", - "_origin": "ast", - "community": 373, - "community_name": "Humanizer.Core", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L169" - }, - { - "id": "src_anichron_worker_packages_lock_humanizer_core_type", - "label": "type", - "_origin": "ast", - "community": 373, - "community_name": "Humanizer.Core", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L168" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_humanizer_core", - "label": "Humanizer.Core", - "_origin": "ast", - "community": 373, - "community_name": "Humanizer.Core", - "file_type": "code", - "norm_label": "humanizer.core", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L167" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_commandline_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 374, - "community_name": "Microsoft.Extensions.Configuration.CommandLine", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L159" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_commandline_resolved", - "label": "resolved", - "_origin": "ast", - "community": 374, - "community_name": "Microsoft.Extensions.Configuration.CommandLine", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L158" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_commandline_type", - "label": "type", - "_origin": "ast", - "community": 374, - "community_name": "Microsoft.Extensions.Configuration.CommandLine", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L157" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_commandline", - "label": "Microsoft.Extensions.Configuration.CommandLine", - "_origin": "ast", - "community": 374, - "community_name": "Microsoft.Extensions.Configuration.CommandLine", - "file_type": "code", - "norm_label": "microsoft.extensions.configuration.commandline", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L156" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_fileextensions_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 375, - "community_name": "Microsoft.Extensions.Configuration.FileExtensions", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L177" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_fileextensions_resolved", - "label": "resolved", - "_origin": "ast", - "community": 375, - "community_name": "Microsoft.Extensions.Configuration.FileExtensions", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L176" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_fileextensions_type", - "label": "type", - "_origin": "ast", - "community": 375, - "community_name": "Microsoft.Extensions.Configuration.FileExtensions", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L175" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_fileextensions", - "label": "Microsoft.Extensions.Configuration.FileExtensions", - "_origin": "ast", - "community": 375, - "community_name": "Microsoft.Extensions.Configuration.FileExtensions", + "community_name": "ExifData", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.fileextensions", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L174" + "norm_label": "localdatetime", + "source_file": "", + "source_location": "" }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_abstractions_contenthash", @@ -61920,94 +62517,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L109" }, - { - "id": "src_anichron_worker_packages_lock_microsoft_codeanalysis_analyzers_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 377, - "community_name": "Microsoft.CodeAnalysis.Analyzers", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L180" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_codeanalysis_analyzers_resolved", - "label": "resolved", - "_origin": "ast", - "community": 377, - "community_name": "Microsoft.CodeAnalysis.Analyzers", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L179" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_codeanalysis_analyzers_type", - "label": "type", - "_origin": "ast", - "community": 377, - "community_name": "Microsoft.CodeAnalysis.Analyzers", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L178" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_codeanalysis_analyzers", - "label": "Microsoft.CodeAnalysis.Analyzers", - "_origin": "ast", - "community": 377, - "community_name": "Microsoft.CodeAnalysis.Analyzers", - "file_type": "code", - "norm_label": "microsoft.codeanalysis.analyzers", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L177" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_abstractions_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 378, - "community_name": "Microsoft.Extensions.Diagnostics.Abstractions", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L234" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_abstractions_resolved", - "label": "resolved", - "_origin": "ast", - "community": 378, - "community_name": "Microsoft.Extensions.Diagnostics.Abstractions", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L233" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_abstractions_type", - "label": "type", - "_origin": "ast", - "community": 378, - "community_name": "Microsoft.Extensions.Diagnostics.Abstractions", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L232" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_diagnostics_abstractions", - "label": "Microsoft.Extensions.Diagnostics.Abstractions", - "_origin": "ast", - "community": 378, - "community_name": "Microsoft.Extensions.Diagnostics.Abstractions", - "file_type": "code", - "norm_label": "microsoft.extensions.diagnostics.abstractions", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L231" - }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_contenthash", "label": "contentHash", @@ -62053,55 +62562,44 @@ "source_location": "L221" }, { - "id": "src_anichron_api_services_adminuserservice_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 38, - "community_name": ".DeleteAsync", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_services_adminuserservice_cs_guid", - "label": "Guid", + "id": "src_anichron_core_data_repository_userstorageconfigrepository_cs_anichrondbcontext", + "label": "AnichronDbContext", "_origin": "ast", "community": 38, - "community_name": ".DeleteAsync", + "community_name": "EfUserStorageConfigRepository", "file_type": "code", - "norm_label": "guid", + "norm_label": "anichrondbcontext", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_services_adminuserservice_cs_iclock", - "label": "IClock", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_cs_fact", + "label": "Fact", "_origin": "ast", "community": 38, - "community_name": ".DeleteAsync", + "community_name": "EfUserStorageConfigRepository", "file_type": "code", - "norm_label": "iclock", + "norm_label": "fact", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_services_adminuserservice_cs_list", - "label": "List", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_cs_guid", + "label": "Guid", "_origin": "ast", "community": 38, - "community_name": ".DeleteAsync", + "community_name": "EfUserStorageConfigRepository", "file_type": "code", - "norm_label": "list", + "norm_label": "guid", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_services_adminuserservice_cs_task", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_cs_task", "label": "Task", "_origin": "ast", "community": 38, - "community_name": ".DeleteAsync", + "community_name": "EfUserStorageConfigRepository", "file_type": "code", "norm_label": "task", "source_file": "", @@ -62151,270 +62649,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L263" }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_binder_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 381, - "community_name": "Microsoft.Extensions.Configuration.Binder", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L150" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_binder_resolved", - "label": "resolved", - "_origin": "ast", - "community": 381, - "community_name": "Microsoft.Extensions.Configuration.Binder", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L149" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_binder_type", - "label": "type", - "_origin": "ast", - "community": 381, - "community_name": "Microsoft.Extensions.Configuration.Binder", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L148" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_binder", - "label": "Microsoft.Extensions.Configuration.Binder", - "_origin": "ast", - "community": 381, - "community_name": "Microsoft.Extensions.Configuration.Binder", - "file_type": "code", - "norm_label": "microsoft.extensions.configuration.binder", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L147" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 382, - "community_name": "Microsoft.Extensions.FileProviders.Physical", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L251" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_resolved", - "label": "resolved", - "_origin": "ast", - "community": 382, - "community_name": "Microsoft.Extensions.FileProviders.Physical", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L250" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_type", - "label": "type", - "_origin": "ast", - "community": 382, - "community_name": "Microsoft.Extensions.FileProviders.Physical", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L249" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_fileproviders_physical", - "label": "Microsoft.Extensions.FileProviders.Physical", - "_origin": "ast", - "community": 382, - "community_name": "Microsoft.Extensions.FileProviders.Physical", - "file_type": "code", - "norm_label": "microsoft.extensions.fileproviders.physical", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L248" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_console_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 383, - "community_name": "Microsoft.Extensions.Logging.Console", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L311" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_console_resolved", - "label": "resolved", - "_origin": "ast", - "community": 383, - "community_name": "Microsoft.Extensions.Logging.Console", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L310" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_console_type", - "label": "type", - "_origin": "ast", - "community": 383, - "community_name": "Microsoft.Extensions.Logging.Console", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L309" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_console", - "label": "Microsoft.Extensions.Logging.Console", - "_origin": "ast", - "community": 383, - "community_name": "Microsoft.Extensions.Logging.Console", - "file_type": "code", - "norm_label": "microsoft.extensions.logging.console", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L308" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 384, - "community_name": "Microsoft.Extensions.Logging", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L278" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_resolved", - "label": "resolved", - "_origin": "ast", - "community": 384, - "community_name": "Microsoft.Extensions.Logging", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L277" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_type", - "label": "type", - "_origin": "ast", - "community": 384, - "community_name": "Microsoft.Extensions.Logging", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L276" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging", - "label": "Microsoft.Extensions.Logging", - "_origin": "ast", - "community": 384, - "community_name": "Microsoft.Extensions.Logging", - "file_type": "code", - "norm_label": "microsoft.extensions.logging", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L275" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 385, - "community_name": "Microsoft.Extensions.Logging.EventSource", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L345" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_resolved", - "label": "resolved", - "_origin": "ast", - "community": 385, - "community_name": "Microsoft.Extensions.Logging.EventSource", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L344" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_type", - "label": "type", - "_origin": "ast", - "community": 385, - "community_name": "Microsoft.Extensions.Logging.EventSource", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L343" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_eventsource", - "label": "Microsoft.Extensions.Logging.EventSource", - "_origin": "ast", - "community": 385, - "community_name": "Microsoft.Extensions.Logging.EventSource", - "file_type": "code", - "norm_label": "microsoft.extensions.logging.eventsource", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L342" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 386, - "community_name": "Microsoft.Extensions.Logging.EventLog", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L333" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_resolved", - "label": "resolved", - "_origin": "ast", - "community": 386, - "community_name": "Microsoft.Extensions.Logging.EventLog", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L332" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_type", - "label": "type", - "_origin": "ast", - "community": 386, - "community_name": "Microsoft.Extensions.Logging.EventLog", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L331" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_eventlog", - "label": "Microsoft.Extensions.Logging.EventLog", - "_origin": "ast", - "community": 386, - "community_name": "Microsoft.Extensions.Logging.EventLog", - "file_type": "code", - "norm_label": "microsoft.extensions.logging.eventlog", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L330" - }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_netcore_platforms_contenthash", "label": "contentHash", @@ -62504,48 +62738,15 @@ "source_location": "L363" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 389, - "community_name": "Microsoft.Extensions.Options", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L357" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_resolved", - "label": "resolved", - "_origin": "ast", - "community": 389, - "community_name": "Microsoft.Extensions.Options", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L356" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_type", - "label": "type", - "_origin": "ast", - "community": 389, - "community_name": "Microsoft.Extensions.Options", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L355" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_options", - "label": "Microsoft.Extensions.Options", + "id": "src_anichron_worker_ingestion_ingestionitem", + "label": "IngestionItem.cs", "_origin": "ast", - "community": 389, - "community_name": "Microsoft.Extensions.Options", + "community": 39, + "community_name": "LivePhotoPairItem", "file_type": "code", - "norm_label": "microsoft.extensions.options", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L354" + "norm_label": "ingestionitem.cs", + "source_file": "src/Anichron.Worker/Ingestion/IngestionItem.cs", + "source_location": "L1" }, { "id": "src_anichron_worker_ingestion_ingestionitem_anichron_worker_ingestion_livephotopairitem_primarymediatype", @@ -62647,138 +62848,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L415" }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 391, - "community_name": "Microsoft.Extensions.Logging.Configuration", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L434" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_resolved", - "label": "resolved", - "_origin": "ast", - "community": 391, - "community_name": "Microsoft.Extensions.Logging.Configuration", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L433" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_type", - "label": "type", - "_origin": "ast", - "community": 391, - "community_name": "Microsoft.Extensions.Logging.Configuration", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L432" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_logging_configuration", - "label": "Microsoft.Extensions.Logging.Configuration", - "_origin": "ast", - "community": 391, - "community_name": "Microsoft.Extensions.Logging.Configuration", - "file_type": "code", - "norm_label": "microsoft.extensions.logging.configuration", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L431" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_system_diagnostics_eventlog", - "label": "System.Diagnostics.EventLog", - "_origin": "ast", - "community": 392, - "community_name": "System.Diagnostics.EventLog", - "file_type": "code", - "norm_label": "system.diagnostics.eventlog", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L456" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_system_diagnostics_eventlog_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 392, - "community_name": "System.Diagnostics.EventLog", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L459" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_system_diagnostics_eventlog_resolved", - "label": "resolved", - "_origin": "ast", - "community": 392, - "community_name": "System.Diagnostics.EventLog", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L458" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_system_diagnostics_eventlog_type", - "label": "type", - "_origin": "ast", - "community": 392, - "community_name": "System.Diagnostics.EventLog", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L457" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_options_configurationextensions_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 393, - "community_name": "Microsoft.Extensions.Options.ConfigurationExtensions", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L504" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_options_configurationextensions_resolved", - "label": "resolved", - "_origin": "ast", - "community": 393, - "community_name": "Microsoft.Extensions.Options.ConfigurationExtensions", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L503" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_options_configurationextensions_type", - "label": "type", - "_origin": "ast", - "community": 393, - "community_name": "Microsoft.Extensions.Options.ConfigurationExtensions", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L502" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_options_configurationextensions", - "label": "Microsoft.Extensions.Options.ConfigurationExtensions", - "_origin": "ast", - "community": 393, - "community_name": "Microsoft.Extensions.Options.ConfigurationExtensions", - "file_type": "code", - "norm_label": "microsoft.extensions.options.configurationextensions", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L501" - }, { "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_xunit_v3_assert", "label": "xunit.v3.assert", @@ -62867,50 +62936,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L375" }, - { - "id": "src_anichron_worker_packages_lock_net10_0_system_composition_runtime", - "label": "System.Composition.Runtime", - "_origin": "ast", - "community": 398, - "community_name": "System.Composition.Runtime", - "file_type": "code", - "norm_label": "system.composition.runtime", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L596" - }, - { - "id": "src_anichron_worker_packages_lock_system_composition_runtime_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 398, - "community_name": "System.Composition.Runtime", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L599" - }, - { - "id": "src_anichron_worker_packages_lock_system_composition_runtime_resolved", - "label": "resolved", - "_origin": "ast", - "community": 398, - "community_name": "System.Composition.Runtime", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L598" - }, - { - "id": "src_anichron_worker_packages_lock_system_composition_runtime_type", - "label": "type", - "_origin": "ast", - "community": 398, - "community_name": "System.Composition.Runtime", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L597" - }, { "id": "readme", "label": "README.md", @@ -63560,50 +63585,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L443" }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_json_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 403, - "community_name": "Microsoft.Extensions.Configuration.Json", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L189" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_json_resolved", - "label": "resolved", - "_origin": "ast", - "community": 403, - "community_name": "Microsoft.Extensions.Configuration.Json", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L188" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_json_type", - "label": "type", - "_origin": "ast", - "community": 403, - "community_name": "Microsoft.Extensions.Configuration.Json", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L187" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_json", - "label": "Microsoft.Extensions.Configuration.Json", - "_origin": "ast", - "community": 403, - "community_name": "Microsoft.Extensions.Configuration.Json", - "file_type": "code", - "norm_label": "microsoft.extensions.configuration.json", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L186" - }, { "id": "docs_agents_triage_labels", "label": "triage-labels.md", @@ -63688,50 +63669,6 @@ "source_file": ".husky/pre-push", "source_location": "L1" }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_win32_registry_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 408, - "community_name": "Microsoft.Win32.Registry", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L432" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_win32_registry_resolved", - "label": "resolved", - "_origin": "ast", - "community": 408, - "community_name": "Microsoft.Win32.Registry", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L431" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_win32_registry_type", - "label": "type", - "_origin": "ast", - "community": 408, - "community_name": "Microsoft.Win32.Registry", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L430" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_win32_registry", - "label": "Microsoft.Win32.Registry", - "_origin": "ast", - "community": 408, - "community_name": "Microsoft.Win32.Registry", - "file_type": "code", - "norm_label": "microsoft.win32.registry", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L429" - }, { "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_xmpcore", "label": "XmpCore", @@ -63963,17 +63900,6 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L95" }, - { - "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_options_configurationextensions", - "label": "Microsoft.Extensions.Options.ConfigurationExtensions", - "_origin": "ast", - "community": 41, - "community_name": "dependencies", - "file_type": "code", - "norm_label": "microsoft.extensions.options.configurationextensions", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L366" - }, { "id": "src_anichron_worker_packages_lock_dependencies_system_diagnostics_eventlog", "label": "System.Diagnostics.EventLog", @@ -64051,6 +63977,17 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L73" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 41, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L434" + }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_dependencies", "label": "dependencies", @@ -64062,6 +63999,39 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L435" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_resolved", + "label": "resolved", + "_origin": "ast", + "community": 41, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L433" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_type", + "label": "type", + "_origin": "ast", + "community": 41, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L432" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_console_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 41, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L449" + }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_console_dependencies", "label": "dependencies", @@ -64073,6 +64043,28 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L450" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_console_resolved", + "label": "resolved", + "_origin": "ast", + "community": 41, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L448" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_console_type", + "label": "type", + "_origin": "ast", + "community": 41, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L447" + }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_debug_contenthash", "label": "contentHash", @@ -64260,6 +64252,28 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L369" }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_logging_configuration", + "label": "Microsoft.Extensions.Logging.Configuration", + "_origin": "ast", + "community": 41, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.logging.configuration", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L431" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_logging_console", + "label": "Microsoft.Extensions.Logging.Console", + "_origin": "ast", + "community": 41, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.logging.console", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L446" + }, { "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_logging_debug", "label": "Microsoft.Extensions.Logging.Debug", @@ -64293,50 +64307,6 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L98" }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_xunit_analyzers", - "label": "xunit.analyzers", - "_origin": "ast", - "community": 410, - "community_name": "xunit.analyzers", - "file_type": "code", - "norm_label": "xunit.analyzers", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L496" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_analyzers_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 410, - "community_name": "xunit.analyzers", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L499" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_analyzers_resolved", - "label": "resolved", - "_origin": "ast", - "community": 410, - "community_name": "xunit.analyzers", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L498" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_analyzers_type", - "label": "type", - "_origin": "ast", - "community": 410, - "community_name": "xunit.analyzers", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L497" - }, { "id": "iconfigurationsection", "label": "IConfigurationSection", @@ -65530,7 +65500,7 @@ "label": "CancellationToken", "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -65541,7 +65511,7 @@ "label": "IConfiguration", "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "norm_label": "iconfiguration", "source_file": "", @@ -65552,7 +65522,7 @@ "label": "ILogger", "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "norm_label": "ilogger", "source_file": "", @@ -65563,7 +65533,7 @@ "label": "LoggerMessage", "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "norm_label": "loggermessage", "source_file": "", @@ -65574,12 +65544,23 @@ "label": "Task", "_origin": "ast", "community": 45, - "community_name": "BootstrapResetService", + "community_name": "IUnitOfWork", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_core_data_iunitofwork", + "label": "IUnitOfWork.cs", + "_origin": "ast", + "community": 45, + "community_name": "IUnitOfWork", + "file_type": "code", + "norm_label": "iunitofwork.cs", + "source_file": "src/Anichron.Core/Data/IUnitOfWork.cs", + "source_location": "L1" + }, { "id": "src_anichron_worker_packages_lock_dependencies_humanizer_core", "label": "Humanizer.Core", @@ -66069,7 +66050,7 @@ "label": "NotFound", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "notfound", "source_file": "", @@ -66080,7 +66061,7 @@ "label": "CancellationToken", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -66091,7 +66072,7 @@ "label": "ClaimsPrincipal", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "claimsprincipal", "source_file": "", @@ -66102,7 +66083,7 @@ "label": "Guid", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "guid", "source_file": "", @@ -66113,7 +66094,7 @@ "label": "IEndpointRouteBuilder", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "iendpointroutebuilder", "source_file": "", @@ -66124,7 +66105,7 @@ "label": "IOptions", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "ioptions", "source_file": "", @@ -66135,7 +66116,7 @@ "label": "IResult", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "iresult", "source_file": "", @@ -66146,18 +66127,103 @@ "label": "Task", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_api_settings_passwordpolicy_anichron_api_settings_passwordpolicy_checkpwnedpasswords", + "label": "CheckPwnedPasswords", + "_origin": "ast", + "community": 47, + "community_name": "PasswordPolicy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "checkpwnedpasswords", + "source_file": "src/Anichron.API/Settings/PasswordPolicy.cs", + "source_location": "L7" + }, + { + "id": "src_anichron_api_settings_passwordpolicy_anichron_api_settings_passwordpolicy_maxlength", + "label": "MaxLength", + "_origin": "ast", + "community": 47, + "community_name": "PasswordPolicy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "maxlength", + "source_file": "src/Anichron.API/Settings/PasswordPolicy.cs", + "source_location": "L6" + }, + { + "id": "src_anichron_api_settings_passwordpolicy_anichron_api_settings_passwordpolicy_minlength", + "label": "MinLength", + "_origin": "ast", + "community": 47, + "community_name": "PasswordPolicy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "minlength", + "source_file": "src/Anichron.API/Settings/PasswordPolicy.cs", + "source_location": "L5" + }, + { + "id": "src_anichron_api_settings_passwordpolicy_anichron_api_settings_passwordpolicy_toolongmessage", + "label": "TooLongMessage", + "_origin": "ast", + "community": 47, + "community_name": "PasswordPolicy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "toolongmessage", + "source_file": "src/Anichron.API/Settings/PasswordPolicy.cs", + "source_location": "L10" + }, + { + "id": "src_anichron_api_settings_passwordpolicy_anichron_api_settings_passwordpolicy_tooshortmessage", + "label": "TooShortMessage", + "_origin": "ast", + "community": 47, + "community_name": "PasswordPolicy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "tooshortmessage", + "source_file": "src/Anichron.API/Settings/PasswordPolicy.cs", + "source_location": "L9" + }, { "id": "src_anichron_api_tests_unit_endpoints_userendpointstests_cs_cancellationtoken", "label": "CancellationToken", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -66168,7 +66234,7 @@ "label": "ClaimsPrincipal", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "claimsprincipal", "source_file": "", @@ -66179,7 +66245,7 @@ "label": "Fact", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "fact", "source_file": "", @@ -66190,7 +66256,7 @@ "label": "Guid", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "guid", "source_file": "", @@ -66201,7 +66267,7 @@ "label": "Ok", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "ok", "source_file": "", @@ -66212,7 +66278,7 @@ "label": "Task", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "task", "source_file": "", @@ -66223,7 +66289,7 @@ "label": "UnauthorizedHttpResult", "_origin": "ast", "community": 47, - "community_name": ".ChangePasswordAsync", + "community_name": "PasswordPolicy", "file_type": "code", "norm_label": "unauthorizedhttpresult", "source_file": "", @@ -66648,55 +66714,145 @@ "source_location": "" }, { - "id": "src_anichron_api_services_lockoutservice_cs_cancellationtoken", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_testfixture_guidfactory", + "label": "GuidFactory", + "_origin": "ast", + "community": 50, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Services", + "scope_chain": [ + "s121" + ] + }, + "norm_label": "guidfactory", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L14" + }, + { + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_testfixture_storageconfigs", + "label": "StorageConfigs", + "_origin": "ast", + "community": 50, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Services", + "scope_chain": [ + "s121" + ] + }, + "norm_label": "storageconfigs", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L13" + }, + { + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_testfixture_unitofwork", + "label": "UnitOfWork", + "_origin": "ast", + "community": 50, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Services", + "scope_chain": [ + "s121" + ] + }, + "norm_label": "unitofwork", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L15" + }, + { + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_testfixture_users", + "label": "Users", + "_origin": "ast", + "community": 50, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Services", + "scope_chain": [ + "s121" + ] + }, + "norm_label": "users", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminStorageConfigServiceTests.cs", + "source_location": "L12" + }, + { + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_cs_cancellationtoken", "label": "CancellationToken", "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_services_lockoutservice_cs_instant", - "label": "Instant", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_cs_fact", + "label": "Fact", "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", - "norm_label": "instant", + "norm_label": "fact", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_services_lockoutservice_cs_task", - "label": "Task", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_cs_guid", + "label": "Guid", "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", - "norm_label": "task", + "norm_label": "guid", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_services_lockoutservicetests_cs_inlinedata", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_cs_iguidfactory", + "label": "IGuidFactory", + "_origin": "ast", + "community": 50, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "iguidfactory", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_cs_inlinedata", "label": "InlineData", "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", "norm_label": "inlinedata", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_services_lockoutservicetests_cs_theory", + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_cs_task", + "label": "Task", + "_origin": "ast", + "community": 50, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_cs_theory", "label": "Theory", "_origin": "ast", "community": 50, - "community_name": "LockoutService", + "community_name": "TestFixture", "file_type": "code", "norm_label": "theory", "source_file": "", @@ -66719,17 +66875,6 @@ "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", "source_location": "L13" }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_ienumerable", "label": "IEnumerable", @@ -66752,17 +66897,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_ingestiondelegate", - "label": "IngestionDelegate", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "ingestiondelegate", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_loggermessage", "label": "LoggerMessage", @@ -66774,17 +66908,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_task", - "label": "Task", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_ivideoproxygenerator_filename", "label": "FileName", @@ -66819,51 +66942,6 @@ "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", "source_location": "L8" }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator_filename", - "label": "FileName", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s29" - ] - }, - "norm_label": "filename", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L14" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator_proxytype", - "label": "ProxyType", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s29" - ] - }, - "norm_label": "proxytype", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L15" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_cs_proxytype", "label": "ProxyType", @@ -66875,17 +66953,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_cs_task", - "label": "Task", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_videoproxymiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_testfixture_clock", "label": "Clock", @@ -67087,28 +67154,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_cs_fact", - "label": "Fact", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "fact", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_cs_task", - "label": "Task", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, { "id": "scripts_mutation_ratchet_test", "label": "mutation-ratchet.test.sh", @@ -67908,84 +67953,7 @@ "source_location": "L95" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_analyzers_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L117" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_analyzers_resolved", - "label": "resolved", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L116" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_analyzers_type", - "label": "type", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L115" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_abstractions_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L142" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_abstractions_dependencies", - "label": "dependencies", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L143" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_abstractions_resolved", - "label": "resolved", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L141" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_abstractions_type", - "label": "type", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L140" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_environmentvariables_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_codecoverage_contenthash", "label": "contentHash", "_origin": "ast", "community": 55, @@ -67993,10 +67961,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L168" + "source_location": "L107" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_environmentvariables_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_codecoverage_resolved", "label": "resolved", "_origin": "ast", "community": 55, @@ -68004,10 +67972,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L167" + "source_location": "L106" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_environmentvariables_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_codecoverage_type", "label": "type", "_origin": "ast", "community": 55, @@ -68015,10 +67983,10 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L166" + "source_location": "L105" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_json_contenthash", "label": "contentHash", "_origin": "ast", "community": 55, @@ -68026,10 +67994,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L200" + "source_location": "L189" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_json_resolved", "label": "resolved", "_origin": "ast", "community": 55, @@ -68037,10 +68005,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L199" + "source_location": "L188" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_json_type", "label": "type", "_origin": "ast", "community": 55, @@ -68048,7 +68016,7 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L198" + "source_location": "L187" }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_dependencyinjection_abstractions_contenthash", @@ -68084,7 +68052,7 @@ "source_location": "L217" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_filesystemglobbing_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_testing_platform_contenthash", "label": "contentHash", "_origin": "ast", "community": 55, @@ -68092,10 +68060,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L261" + "source_location": "L405" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_filesystemglobbing_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_testing_platform_resolved", "label": "resolved", "_origin": "ast", "community": 55, @@ -68103,10 +68071,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L260" + "source_location": "L404" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_filesystemglobbing_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_testing_platform_type", "label": "type", "_origin": "ast", "community": 55, @@ -68114,10 +68082,10 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L259" + "source_location": "L403" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_contenthash", "label": "contentHash", "_origin": "ast", "community": 55, @@ -68125,10 +68093,21 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L296" + "source_location": "L31" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_requested", + "label": "requested", + "_origin": "ast", + "community": 55, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "requested", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L29" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_resolved", "label": "resolved", "_origin": "ast", "community": 55, @@ -68136,10 +68115,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L295" + "source_location": "L30" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_type", "label": "type", "_origin": "ast", "community": 55, @@ -68147,10 +68126,10 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L294" + "source_location": "L28" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_debug_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_win32_registry_contenthash", "label": "contentHash", "_origin": "ast", "community": 55, @@ -68158,10 +68137,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L323" + "source_location": "L432" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_debug_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_win32_registry_resolved", "label": "resolved", "_origin": "ast", "community": 55, @@ -68169,10 +68148,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L322" + "source_location": "L431" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_debug_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_win32_registry_type", "label": "type", "_origin": "ast", "community": 55, @@ -68180,164 +68159,186 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L321" + "source_location": "L430" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_testing_platform_contenthash", - "label": "contentHash", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_applicationinsights", + "label": "Microsoft.ApplicationInsights", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "contenthash", + "norm_label": "microsoft.applicationinsights", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L405" + "source_location": "L94" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_testing_platform_resolved", - "label": "resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_codecoverage", + "label": "Microsoft.CodeCoverage", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "resolved", + "norm_label": "microsoft.codecoverage", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L404" + "source_location": "L104" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_testing_platform_type", - "label": "type", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_json", + "label": "Microsoft.Extensions.Configuration.Json", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "type", + "norm_label": "microsoft.extensions.configuration.json", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L403" + "source_location": "L186" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_applicationinsights", - "label": "Microsoft.ApplicationInsights", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_dependencyinjection_abstractions", + "label": "Microsoft.Extensions.DependencyInjection.Abstractions", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.applicationinsights", + "norm_label": "microsoft.extensions.dependencyinjection.abstractions", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L94" + "source_location": "L216" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_entityframeworkcore_analyzers", - "label": "Microsoft.EntityFrameworkCore.Analyzers", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_testing_platform", + "label": "Microsoft.Testing.Platform", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.entityframeworkcore.analyzers", + "norm_label": "microsoft.testing.platform", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L114" + "source_location": "L402" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_abstractions", - "label": "Microsoft.Extensions.Configuration.Abstractions", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_visualstudio_threading_analyzers", + "label": "Microsoft.VisualStudio.Threading.Analyzers", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.abstractions", + "norm_label": "microsoft.visualstudio.threading.analyzers", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L139" + "source_location": "L27" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_environmentvariables", - "label": "Microsoft.Extensions.Configuration.EnvironmentVariables", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_win32_registry", + "label": "Microsoft.Win32.Registry", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.environmentvariables", + "norm_label": "microsoft.win32.registry", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L165" + "source_location": "L429" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_usersecrets", - "label": "Microsoft.Extensions.Configuration.UserSecrets", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_system_diagnostics_eventlog", + "label": "System.Diagnostics.EventLog", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.usersecrets", + "norm_label": "system.diagnostics.eventlog", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L197" + "source_location": "L456" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_dependencyinjection_abstractions", - "label": "Microsoft.Extensions.DependencyInjection.Abstractions", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_xunit_analyzers", + "label": "xunit.analyzers", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.extensions.dependencyinjection.abstractions", + "norm_label": "xunit.analyzers", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L216" + "source_location": "L496" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_filesystemglobbing", - "label": "Microsoft.Extensions.FileSystemGlobbing", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_xunit_runner_visualstudio", + "label": "xunit.runner.visualstudio", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.extensions.filesystemglobbing", + "norm_label": "xunit.runner.visualstudio", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L258" + "source_location": "L63" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_configuration", - "label": "Microsoft.Extensions.Logging.Configuration", + "id": "src_anichron_worker_tests_unit_packages_lock_system_diagnostics_eventlog_contenthash", + "label": "contentHash", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.extensions.logging.configuration", + "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L293" + "source_location": "L459" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_debug", - "label": "Microsoft.Extensions.Logging.Debug", + "id": "src_anichron_worker_tests_unit_packages_lock_system_diagnostics_eventlog_resolved", + "label": "resolved", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.extensions.logging.debug", + "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L320" + "source_location": "L458" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_testing_platform", - "label": "Microsoft.Testing.Platform", + "id": "src_anichron_worker_tests_unit_packages_lock_system_diagnostics_eventlog_type", + "label": "type", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.testing.platform", + "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L402" + "source_location": "L457" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_testably_abstractions_filesystem_interface", - "label": "Testably.Abstractions.FileSystem.Interface", + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_analyzers_contenthash", + "label": "contentHash", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "testably.abstractions.filesystem.interface", + "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L486" + "source_location": "L499" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_testably_abstractions_filesystem_interface_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_analyzers_resolved", + "label": "resolved", + "_origin": "ast", + "community": 55, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L498" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_analyzers_type", + "label": "type", + "_origin": "ast", + "community": 55, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L497" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_contenthash", "label": "contentHash", "_origin": "ast", "community": 55, @@ -68345,10 +68346,21 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L489" + "source_location": "L67" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_testably_abstractions_filesystem_interface_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_requested", + "label": "requested", + "_origin": "ast", + "community": 55, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "requested", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L65" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_resolved", "label": "resolved", "_origin": "ast", "community": 55, @@ -68356,10 +68368,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L488" + "source_location": "L66" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_testably_abstractions_filesystem_interface_type", + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_type", "label": "type", "_origin": "ast", "community": 55, @@ -68367,7 +68379,7 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L487" + "source_location": "L64" }, { "id": "src_anichron_api_infrastructure_healthcheckresponsewriter_cs_healthreport", @@ -68458,105 +68470,105 @@ "source_location": "" }, { - "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_anichron_worker_ingestion_middlewares_imageproxymiddleware_order", - "label": "Order", + "id": "src_anichron_worker_crawling_workerstate", + "label": "WorkerState.cs", "_origin": "ast", "community": 57, - "community_name": "ImageProxyMiddleware", + "community_name": "WorkerInitializer", "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Middlewares", - "scope_chain": [ - "s209" - ] - }, - "norm_label": "order", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/ImageProxyMiddleware.cs", - "source_location": "L17" + "norm_label": "workerstate.cs", + "source_file": "src/Anichron.Worker/Crawling/WorkerState.cs", + "source_location": "L1" }, { - "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_cancellationtoken", - "label": "CancellationToken", + "id": "src_anichron_worker_crawling_workerstate_anichron_worker_crawling_workerstate_resolveduserid", + "label": "ResolvedUserId", "_origin": "ast", "community": 57, - "community_name": "ImageProxyMiddleware", + "community_name": "WorkerInitializer", "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" + "metadata": { + "namespace": "Anichron.Worker.Crawling", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "resolveduserid", + "source_file": "src/Anichron.Worker/Crawling/WorkerState.cs", + "source_location": "L7" }, { - "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_ienumerable", - "label": "IEnumerable", + "id": "src_anichron_worker_crawling_workerstate_cs_guid", + "label": "Guid", "_origin": "ast", "community": 57, - "community_name": "ImageProxyMiddleware", + "community_name": "WorkerInitializer", "file_type": "code", - "norm_label": "ienumerable", + "norm_label": "guid", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_ifilesystem", - "label": "IFileSystem", + "id": "src_anichron_worker_startup_workerinitializer_cs_cancellationtoken", + "label": "CancellationToken", "_origin": "ast", "community": 57, - "community_name": "ImageProxyMiddleware", + "community_name": "WorkerInitializer", "file_type": "code", - "norm_label": "ifilesystem", + "norm_label": "cancellationtoken", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_ilogger", + "id": "src_anichron_worker_startup_workerinitializer_cs_ilogger", "label": "ILogger", "_origin": "ast", "community": 57, - "community_name": "ImageProxyMiddleware", + "community_name": "WorkerInitializer", "file_type": "code", "norm_label": "ilogger", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_ingestiondelegate", - "label": "IngestionDelegate", + "id": "src_anichron_worker_startup_workerinitializer_cs_ioptions", + "label": "IOptions", "_origin": "ast", "community": 57, - "community_name": "ImageProxyMiddleware", + "community_name": "WorkerInitializer", "file_type": "code", - "norm_label": "ingestiondelegate", + "norm_label": "ioptions", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_loggermessage", - "label": "LoggerMessage", + "id": "src_anichron_worker_startup_workerinitializer_cs_iservicescopefactory", + "label": "IServiceScopeFactory", "_origin": "ast", "community": 57, - "community_name": "ImageProxyMiddleware", + "community_name": "WorkerInitializer", "file_type": "code", - "norm_label": "loggermessage", + "norm_label": "iservicescopefactory", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_rgba32", - "label": "Rgba32", + "id": "src_anichron_worker_startup_workerinitializer_cs_loggermessage", + "label": "LoggerMessage", "_origin": "ast", "community": 57, - "community_name": "ImageProxyMiddleware", + "community_name": "WorkerInitializer", "file_type": "code", - "norm_label": "rgba32", + "norm_label": "loggermessage", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_middlewares_imageproxymiddleware_cs_task", + "id": "src_anichron_worker_startup_workerinitializer_cs_task", "label": "Task", "_origin": "ast", "community": 57, - "community_name": "ImageProxyMiddleware", + "community_name": "WorkerInitializer", "file_type": "code", "norm_label": "task", "source_file": "", @@ -69636,70 +69648,70 @@ "source_location": "L94" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_caching_abstractions", - "label": "Microsoft.Extensions.Caching.Abstractions", + "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_contenthash", + "label": "contentHash", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.caching.abstractions", + "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L132" + "source_location": "L89" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration", - "label": "Microsoft.Extensions.Configuration", + "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_dependencies", + "label": "dependencies", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration", + "norm_label": "dependencies", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L152" + "source_location": "L90" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration_abstractions", - "label": "Microsoft.Extensions.Configuration.Abstractions", + "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_resolved", + "label": "resolved", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.abstractions", + "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L153" + "source_location": "L88" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration_binder", - "label": "Microsoft.Extensions.Configuration.Binder", + "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_type", + "label": "type", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.binder", + "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L300" + "source_location": "L87" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration_fileextensions", - "label": "Microsoft.Extensions.Configuration.FileExtensions", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_caching_abstractions", + "label": "Microsoft.Extensions.Caching.Abstractions", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.fileextensions", + "norm_label": "microsoft.extensions.caching.abstractions", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L193" + "source_location": "L132" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration_json", - "label": "Microsoft.Extensions.Configuration.Json", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration_binder", + "label": "Microsoft.Extensions.Configuration.Binder", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.json", + "norm_label": "microsoft.extensions.configuration.binder", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L203" + "source_location": "L300" }, { "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_dependencyinjection", @@ -69723,50 +69735,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L133" }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_diagnostics_abstractions", - "label": "Microsoft.Extensions.Diagnostics.Abstractions", - "_origin": "ast", - "community": 61, - "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "file_type": "code", - "norm_label": "microsoft.extensions.diagnostics.abstractions", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L227" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_fileproviders_abstractions", - "label": "Microsoft.Extensions.FileProviders.Abstractions", - "_origin": "ast", - "community": 61, - "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "file_type": "code", - "norm_label": "microsoft.extensions.fileproviders.abstractions", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L181" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_fileproviders_physical", - "label": "Microsoft.Extensions.FileProviders.Physical", - "_origin": "ast", - "community": 61, - "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "file_type": "code", - "norm_label": "microsoft.extensions.fileproviders.physical", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L182" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_filesystemglobbing", - "label": "Microsoft.Extensions.FileSystemGlobbing", - "_origin": "ast", - "community": 61, - "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "file_type": "code", - "norm_label": "microsoft.extensions.filesystemglobbing", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L254" - }, { "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_logging", "label": "Microsoft.Extensions.Logging", @@ -69823,15 +69791,26 @@ "source_location": "L228" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_primitives", - "label": "Microsoft.Extensions.Primitives", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_system_diagnostics_eventlog", + "label": "System.Diagnostics.EventLog", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.primitives", + "norm_label": "system.diagnostics.eventlog", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L124" + "source_location": "L91" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L130" }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_dependencies", @@ -69845,40 +69824,40 @@ "source_location": "L131" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_binder_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_resolved", + "label": "resolved", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "dependencies", + "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L151" + "source_location": "L129" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_commandline_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_type", + "label": "type", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "dependencies", + "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L160" + "source_location": "L128" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_environmentvariables_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_abstractions_contenthash", + "label": "contentHash", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "dependencies", + "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L169" + "source_location": "L234" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_fileextensions_dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_abstractions_dependencies", "label": "dependencies", "_origin": "ast", "community": 61, @@ -69886,32 +69865,32 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L178" + "source_location": "L235" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_json_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_abstractions_resolved", + "label": "resolved", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "dependencies", + "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L190" + "source_location": "L233" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_abstractions_type", + "label": "type", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "dependencies", + "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L201" + "source_location": "L232" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_abstractions_dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_dependencies", "label": "dependencies", "_origin": "ast", "community": 61, @@ -69919,21 +69898,21 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L235" + "source_location": "L297" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_console_contenthash", + "label": "contentHash", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "dependencies", + "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L225" + "source_location": "L311" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_console_dependencies", "label": "dependencies", "_origin": "ast", "community": 61, @@ -69941,40 +69920,51 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L252" + "source_location": "L312" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_hosting_abstractions_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_console_resolved", + "label": "resolved", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "dependencies", + "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L267" + "source_location": "L310" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_console_type", + "label": "type", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "dependencies", + "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L297" + "source_location": "L309" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_console_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_contenthash", + "label": "contentHash", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "dependencies", + "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L312" + "source_location": "L278" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_debug_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L323" }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_debug_dependencies", @@ -69987,6 +69977,28 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L324" }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_debug_resolved", + "label": "resolved", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L322" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_debug_type", + "label": "type", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L321" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_dependencies", "label": "dependencies", @@ -69998,6 +70010,17 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L279" }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L333" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_dependencies", "label": "dependencies", @@ -70009,6 +70032,39 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L334" }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_resolved", + "label": "resolved", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L332" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_type", + "label": "type", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L331" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L345" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_dependencies", "label": "dependencies", @@ -70020,6 +70076,50 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L346" }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_resolved", + "label": "resolved", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L344" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_type", + "label": "type", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L343" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_resolved", + "label": "resolved", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L277" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_type", + "label": "type", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L276" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_configurationextensions_dependencies", "label": "dependencies", @@ -70032,15 +70132,92 @@ "source_location": "L367" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_castle_core", + "label": "Castle.Core", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "dependencies", + "norm_label": "castle.core", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L358" + "source_location": "L86" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_caching_memory", + "label": "Microsoft.Extensions.Caching.Memory", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.caching.memory", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L127" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_diagnostics_abstractions", + "label": "Microsoft.Extensions.Diagnostics.Abstractions", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.diagnostics.abstractions", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L231" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging", + "label": "Microsoft.Extensions.Logging", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.logging", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L275" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_console", + "label": "Microsoft.Extensions.Logging.Console", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.logging.console", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L308" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_debug", + "label": "Microsoft.Extensions.Logging.Debug", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.logging.debug", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L320" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_eventlog", + "label": "Microsoft.Extensions.Logging.EventLog", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.logging.eventlog", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L330" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_eventsource", + "label": "Microsoft.Extensions.Logging.EventSource", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.logging.eventsource", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L342" }, { "id": "src_anichron_api_tests_unit_packages_lock_castle_core_contenthash", @@ -70812,12 +70989,23 @@ "source_file": "", "source_location": "" }, + { + "id": "ilogger", + "label": "ILogger", + "_origin": "ast", + "community": 65, + "community_name": "CapturingLogger", + "file_type": "code", + "norm_label": "ilogger", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_ingestion_middlewares_loggingmiddleware_anichron_worker_ingestion_middlewares_loggingmiddleware_order", "label": "Order", "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Middlewares", @@ -70834,7 +71022,7 @@ "label": "CancellationToken", "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -70845,7 +71033,7 @@ "label": "IngestionDelegate", "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "norm_label": "ingestiondelegate", "source_file": "", @@ -70856,40 +71044,112 @@ "label": "Task", "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_capturinglogger_entries", + "label": "Entries", + "_origin": "ast", + "community": 65, + "community_name": "CapturingLogger", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", + "scope_chain": [ + "s185" + ] + }, + "norm_label": "entries", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/LoggingMiddlewareTests.cs", + "source_location": "L113" + }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_fact", "label": "Fact", "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "norm_label": "fact", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_idisposable", + "label": "IDisposable", + "_origin": "ast", + "community": 65, + "community_name": "CapturingLogger", + "file_type": "code", + "norm_label": "idisposable", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_invalidoperationexception", "label": "InvalidOperationException", "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "norm_label": "invalidoperationexception", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_ireadonlylist", + "label": "IReadOnlyList", + "_origin": "ast", + "community": 65, + "community_name": "CapturingLogger", + "file_type": "code", + "norm_label": "ireadonlylist", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_level", + "label": "Level", + "_origin": "ast", + "community": 65, + "community_name": "CapturingLogger", + "file_type": "code", + "norm_label": "level", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_list", + "label": "List", + "_origin": "ast", + "community": 65, + "community_name": "CapturingLogger", + "file_type": "code", + "norm_label": "list", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_message", + "label": "Message", + "_origin": "ast", + "community": 65, + "community_name": "CapturingLogger", + "file_type": "code", + "norm_label": "message", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_loggingmiddlewaretests_cs_task", "label": "Task", "_origin": "ast", "community": 65, - "community_name": "LoggingMiddleware", + "community_name": "CapturingLogger", "file_type": "code", "norm_label": "task", "source_file": "", @@ -71283,107 +71543,147 @@ "source_location": "L1" }, { - "id": "ilogger", - "label": "ILogger", + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_storageconfigrepository", + "label": "StorageConfigRepository", "_origin": "ast", "community": 68, - "community_name": "CapturingLogger", + "community_name": "TestFixture", "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Startup", + "scope_chain": [ + "s307" + ] + }, + "norm_label": "storageconfigrepository", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L18" }, { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_anichron_worker_tests_unit_maintenance_capturinglogger_entries", - "label": "Entries", + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_unitofwork", + "label": "UnitOfWork", "_origin": "ast", "community": 68, - "community_name": "CapturingLogger", + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Maintenance", + "namespace": "Anichron.Worker.Tests.Unit.Startup", "scope_chain": [ - "s241" + "s307" ] }, - "norm_label": "entries", - "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", - "source_location": "L91" + "norm_label": "unitofwork", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L19" }, { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_eventid", - "label": "EventId", + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_userrepository", + "label": "UserRepository", "_origin": "ast", "community": 68, - "community_name": "CapturingLogger", + "community_name": "TestFixture", "file_type": "code", - "norm_label": "eventid", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Startup", + "scope_chain": [ + "s307" + ] + }, + "norm_label": "userrepository", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L17" + }, + { + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_workerstate", + "label": "WorkerState", + "_origin": "ast", + "community": 68, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Startup", + "scope_chain": [ + "s307" + ] + }, + "norm_label": "workerstate", + "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", + "source_location": "L20" + }, + { + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 68, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "cancellationtoken", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_exception", - "label": "Exception", + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_fact", + "label": "Fact", "_origin": "ast", "community": 68, - "community_name": "CapturingLogger", + "community_name": "TestFixture", "file_type": "code", - "norm_label": "exception", + "norm_label": "fact", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_func", - "label": "Func", + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_ilogger", + "label": "ILogger", "_origin": "ast", "community": 68, - "community_name": "CapturingLogger", + "community_name": "TestFixture", "file_type": "code", - "norm_label": "func", + "norm_label": "ilogger", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_idisposable", - "label": "IDisposable", + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_invalidoperationexception", + "label": "InvalidOperationException", "_origin": "ast", "community": 68, - "community_name": "CapturingLogger", + "community_name": "TestFixture", "file_type": "code", - "norm_label": "idisposable", + "norm_label": "invalidoperationexception", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_ireadonlylist", - "label": "IReadOnlyList", + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_iservicescopefactory", + "label": "IServiceScopeFactory", "_origin": "ast", "community": 68, - "community_name": "CapturingLogger", + "community_name": "TestFixture", "file_type": "code", - "norm_label": "ireadonlylist", + "norm_label": "iservicescopefactory", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_list", - "label": "List", + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_task", + "label": "Task", "_origin": "ast", "community": 68, - "community_name": "CapturingLogger", + "community_name": "TestFixture", "file_type": "code", - "norm_label": "list", + "norm_label": "task", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_maintenance_tokencleanupservicetests_cs_loglevel", - "label": "LogLevel", + "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_workerstate", + "label": "WorkerState", "_origin": "ast", "community": 68, - "community_name": "CapturingLogger", + "community_name": "TestFixture", "file_type": "code", - "norm_label": "loglevel", + "norm_label": "workerstate", "source_file": "", "source_location": "" }, @@ -71762,257 +72062,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_anichrondbcontext", - "label": "AnichronDbContext", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "anichrondbcontext", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_instant", - "label": "Instant", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "instant", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_task", - "label": "Task", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_domain_refreshtoken", - "label": "RefreshToken.cs", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "refreshtoken.cs", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_createdat", - "label": "CreatedAt", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "createdat", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L8" - }, - { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_expiresat", - "label": "ExpiresAt", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "expiresat", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L9" - }, - { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_id", - "label": "Id", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "id", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L5" - }, - { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_revokedat", - "label": "RevokedAt", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "revokedat", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L10" - }, - { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_tokenhash", - "label": "TokenHash", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "tokenhash", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L7" - }, - { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_user", - "label": "User", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "user", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L12" - }, - { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_userid", - "label": "UserId", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "userid", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L6" - }, - { - "id": "src_anichron_core_domain_refreshtoken_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_domain_refreshtoken_cs_instant", - "label": "Instant", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "instant", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_fact", - "label": "Fact", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "fact", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_instant", - "label": "Instant", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "instant", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_task", - "label": "Task", - "_origin": "ast", - "community": 7, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, { "id": "tokenservice", "label": "TokenService", @@ -72201,6 +72250,17 @@ "source_file": "src/Anichron.Core/GuidFactory.cs", "source_location": "L1" }, + { + "id": "src_anichron_core_guidfactory_cs_guid", + "label": "Guid", + "_origin": "ast", + "community": 72, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_ingestion_proxy_proxyfilebuilder_cs_iclock", "label": "IClock", @@ -72792,6 +72852,39 @@ "source_file": "src/Anichron.Infrastructure/Data/PostgresConstants.cs", "source_location": "L1" }, + { + "id": "src_anichron_worker_startup_idatabasemigrator", + "label": "IDatabaseMigrator.cs", + "_origin": "ast", + "community": 74, + "community_name": "Anichron.Infrastructure.Data", + "file_type": "code", + "norm_label": "idatabasemigrator.cs", + "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_startup_idatabasemigrator_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 74, + "community_name": "Anichron.Infrastructure.Data", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_startup_idatabasemigrator_cs_task", + "label": "Task", + "_origin": "ast", + "community": 74, + "community_name": "Anichron.Infrastructure.Data", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, { "id": "suppressmessage", "label": "SuppressMessage", @@ -79425,6 +79518,28 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_fileproviders_abstractions", + "label": "Microsoft.Extensions.FileProviders.Abstractions", + "_origin": "ast", + "community": 96, + "community_name": "Microsoft.Extensions.Primitives", + "file_type": "code", + "norm_label": "microsoft.extensions.fileproviders.abstractions", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L65" + }, + { + "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_fileproviders_physical", + "label": "Microsoft.Extensions.FileProviders.Physical", + "_origin": "ast", + "community": 96, + "community_name": "Microsoft.Extensions.Primitives", + "file_type": "code", + "norm_label": "microsoft.extensions.fileproviders.physical", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L86" + }, { "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_filesystemglobbing", "label": "Microsoft.Extensions.FileSystemGlobbing", @@ -79535,6 +79650,50 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L273" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 96, + "community_name": "Microsoft.Extensions.Primitives", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L310" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 96, + "community_name": "Microsoft.Extensions.Primitives", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L311" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_resolved", + "label": "resolved", + "_origin": "ast", + "community": 96, + "community_name": "Microsoft.Extensions.Primitives", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L309" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_type", + "label": "type", + "_origin": "ast", + "community": 96, + "community_name": "Microsoft.Extensions.Primitives", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L308" + }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_abstractions_contenthash", "label": "contentHash", @@ -79689,6 +79848,17 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L272" }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_fileextensions", + "label": "Microsoft.Extensions.Configuration.FileExtensions", + "_origin": "ast", + "community": 96, + "community_name": "Microsoft.Extensions.Primitives", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.fileextensions", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L307" + }, { "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_fileproviders_abstractions", "label": "Microsoft.Extensions.FileProviders.Abstractions", @@ -80926,7 +81096,7 @@ "label": "microsoft_entityframeworkcore_infrastructure", "_origin": "semantic", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "external": true, "file_type": "concept", "norm_label": "microsoft_entityframeworkcore_infrastructure", @@ -80938,7 +81108,7 @@ "label": "microsoft_entityframeworkcore_migrations", "_origin": "semantic", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "external": true, "file_type": "concept", "norm_label": "microsoft_entityframeworkcore_migrations", @@ -80950,19 +81120,31 @@ "label": "microsoft_entityframeworkcore_storage_valueconversion", "_origin": "semantic", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "external": true, "file_type": "concept", "norm_label": "microsoft_entityframeworkcore_storage_valueconversion", "source_file": "", "type": "external" }, + { + "id": "nodatime", + "label": "nodatime", + "_origin": "semantic", + "community": 104, + "community_name": "nodatime", + "external": true, + "file_type": "concept", + "norm_label": "nodatime", + "source_file": "", + "type": "external" + }, { "id": "npgsql_entityframeworkcore_postgresql_metadata", "label": "npgsql_entityframeworkcore_postgresql_metadata", "_origin": "semantic", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "external": true, "file_type": "concept", "norm_label": "npgsql_entityframeworkcore_postgresql_metadata", @@ -80974,7 +81156,7 @@ "label": "system", "_origin": "semantic", "community": 104, - "community_name": "20260511154104_InitialSchema.Designer.cs", + "community_name": "nodatime", "external": true, "file_type": "concept", "norm_label": "system", @@ -80982,62 +81164,62 @@ "type": "external" }, { - "id": "microsoft_extensions_dependencyinjection", - "label": "microsoft_extensions_dependencyinjection", + "id": "metadataextractor", + "label": "metadataextractor", "_origin": "semantic", "community": 121, "community_name": "Anichron.Worker.Ingestion.Pipeline", "external": true, "file_type": "concept", - "norm_label": "microsoft_extensions_dependencyinjection", + "norm_label": "metadataextractor", "source_file": "", "type": "external" }, { - "id": "microsoft_extensions_hosting", - "label": "microsoft_extensions_hosting", + "id": "metadataextractor_formats_exif", + "label": "metadataextractor_formats_exif", "_origin": "semantic", "community": 121, "community_name": "Anichron.Worker.Ingestion.Pipeline", "external": true, "file_type": "concept", - "norm_label": "microsoft_extensions_hosting", + "norm_label": "metadataextractor_formats_exif", "source_file": "", "type": "external" }, { - "id": "microsoft_extensions_logging", - "label": "microsoft_extensions_logging", + "id": "metadataextractor_formats_quicktime", + "label": "metadataextractor_formats_quicktime", "_origin": "semantic", "community": 121, "community_name": "Anichron.Worker.Ingestion.Pipeline", "external": true, "file_type": "concept", - "norm_label": "microsoft_extensions_logging", + "norm_label": "metadataextractor_formats_quicktime", "source_file": "", "type": "external" }, { - "id": "microsoft_extensions_options", - "label": "microsoft_extensions_options", + "id": "microsoft_extensions_logging", + "label": "microsoft_extensions_logging", "_origin": "semantic", "community": 121, "community_name": "Anichron.Worker.Ingestion.Pipeline", "external": true, "file_type": "concept", - "norm_label": "microsoft_extensions_options", + "norm_label": "microsoft_extensions_logging", "source_file": "", "type": "external" }, { - "id": "nodatime", - "label": "nodatime", + "id": "nodatime_text", + "label": "nodatime_text", "_origin": "semantic", "community": 121, "community_name": "Anichron.Worker.Ingestion.Pipeline", "external": true, "file_type": "concept", - "norm_label": "nodatime", + "norm_label": "nodatime_text", "source_file": "", "type": "external" }, @@ -81078,74 +81260,50 @@ "type": "external" }, { - "id": "system_threading_channels", - "label": "system_threading_channels", - "_origin": "semantic", - "community": 121, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "external": true, - "file_type": "concept", - "norm_label": "system_threading_channels", - "source_file": "", - "type": "external" - }, - { - "id": "metadataextractor", - "label": "metadataextractor", - "_origin": "semantic", - "community": 154, - "community_name": "ExifExtractionMiddleware.cs", - "external": true, - "file_type": "concept", - "norm_label": "metadataextractor", - "source_file": "", - "type": "external" - }, - { - "id": "metadataextractor_formats_exif", - "label": "metadataextractor_formats_exif", + "id": "blurhash_imagesharp", + "label": "blurhash_imagesharp", "_origin": "semantic", - "community": 154, - "community_name": "ExifExtractionMiddleware.cs", + "community": 182, + "community_name": "microsoft_extensions_options", "external": true, "file_type": "concept", - "norm_label": "metadataextractor_formats_exif", + "norm_label": "blurhash_imagesharp", "source_file": "", "type": "external" }, { - "id": "metadataextractor_formats_quicktime", - "label": "metadataextractor_formats_quicktime", + "id": "microsoft_extensions_dependencyinjection", + "label": "microsoft_extensions_dependencyinjection", "_origin": "semantic", - "community": 154, - "community_name": "ExifExtractionMiddleware.cs", + "community": 182, + "community_name": "microsoft_extensions_options", "external": true, "file_type": "concept", - "norm_label": "metadataextractor_formats_quicktime", + "norm_label": "microsoft_extensions_dependencyinjection", "source_file": "", "type": "external" }, { - "id": "nodatime_text", - "label": "nodatime_text", + "id": "microsoft_extensions_hosting", + "label": "microsoft_extensions_hosting", "_origin": "semantic", - "community": 154, - "community_name": "ExifExtractionMiddleware.cs", + "community": 182, + "community_name": "microsoft_extensions_options", "external": true, "file_type": "concept", - "norm_label": "nodatime_text", + "norm_label": "microsoft_extensions_hosting", "source_file": "", "type": "external" }, { - "id": "blurhash_imagesharp", - "label": "blurhash_imagesharp", + "id": "microsoft_extensions_options", + "label": "microsoft_extensions_options", "_origin": "semantic", "community": 182, - "community_name": "ImageProcessor.cs", + "community_name": "microsoft_extensions_options", "external": true, "file_type": "concept", - "norm_label": "blurhash_imagesharp", + "norm_label": "microsoft_extensions_options", "source_file": "", "type": "external" }, @@ -81154,7 +81312,7 @@ "label": "sixlabors_imagesharp", "_origin": "semantic", "community": 182, - "community_name": "ImageProcessor.cs", + "community_name": "microsoft_extensions_options", "external": true, "file_type": "concept", "norm_label": "sixlabors_imagesharp", @@ -81166,7 +81324,7 @@ "label": "sixlabors_imagesharp_formats_jpeg", "_origin": "semantic", "community": 182, - "community_name": "ImageProcessor.cs", + "community_name": "microsoft_extensions_options", "external": true, "file_type": "concept", "norm_label": "sixlabors_imagesharp_formats_jpeg", @@ -81178,7 +81336,7 @@ "label": "sixlabors_imagesharp_pixelformats", "_origin": "semantic", "community": 182, - "community_name": "ImageProcessor.cs", + "community_name": "microsoft_extensions_options", "external": true, "file_type": "concept", "norm_label": "sixlabors_imagesharp_pixelformats", @@ -81190,13 +81348,25 @@ "label": "sixlabors_imagesharp_processing", "_origin": "semantic", "community": 182, - "community_name": "ImageProcessor.cs", + "community_name": "microsoft_extensions_options", "external": true, "file_type": "concept", "norm_label": "sixlabors_imagesharp_processing", "source_file": "", "type": "external" }, + { + "id": "system_threading_channels", + "label": "system_threading_channels", + "_origin": "semantic", + "community": 182, + "community_name": "microsoft_extensions_options", + "external": true, + "file_type": "concept", + "norm_label": "system_threading_channels", + "source_file": "", + "type": "external" + }, { "id": "fluentassertions", "label": "fluentassertions", @@ -81234,218 +81404,230 @@ "type": "external" }, { - "id": "system_globalization", - "label": "system_globalization", + "id": "konscious_security_cryptography", + "label": "konscious_security_cryptography", "_origin": "semantic", - "community": 20, - "community_name": "AppIniInitializer", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", "external": true, "file_type": "concept", - "norm_label": "system_globalization", + "norm_label": "konscious_security_cryptography", "source_file": "", "type": "external" }, { - "id": "microsoft_aspnetcore_mvc", - "label": "microsoft_aspnetcore_mvc", + "id": "microsoft_aspnetcore_authentication_jwtbearer", + "label": "microsoft_aspnetcore_authentication_jwtbearer", "_origin": "semantic", - "community": 21, - "community_name": "AuthTokens", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", "external": true, "file_type": "concept", - "norm_label": "microsoft_aspnetcore_mvc", + "norm_label": "microsoft_aspnetcore_authentication_jwtbearer", "source_file": "", "type": "external" }, { - "id": "system_componentmodel_dataannotations", - "label": "system_componentmodel_dataannotations", + "id": "microsoft_aspnetcore_httpoverrides", + "label": "microsoft_aspnetcore_httpoverrides", "_origin": "semantic", - "community": 22, - "community_name": "WorkerSettings", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", "external": true, "file_type": "concept", - "norm_label": "system_componentmodel_dataannotations", + "norm_label": "microsoft_aspnetcore_httpoverrides", "source_file": "", "type": "external" }, { - "id": "konscious_security_cryptography", - "label": "konscious_security_cryptography", + "id": "microsoft_extensions_configuration", + "label": "microsoft_extensions_configuration", "_origin": "semantic", - "community": 33, - "community_name": "Anichron.API.Settings", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", "external": true, "file_type": "concept", - "norm_label": "konscious_security_cryptography", + "norm_label": "microsoft_extensions_configuration", "source_file": "", "type": "external" }, { - "id": "microsoft_aspnetcore_authentication_jwtbearer", - "label": "microsoft_aspnetcore_authentication_jwtbearer", + "id": "microsoft_identitymodel_tokens", + "label": "microsoft_identitymodel_tokens", "_origin": "semantic", - "community": 33, - "community_name": "Anichron.API.Settings", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", "external": true, "file_type": "concept", - "norm_label": "microsoft_aspnetcore_authentication_jwtbearer", + "norm_label": "microsoft_identitymodel_tokens", "source_file": "", "type": "external" }, { - "id": "microsoft_aspnetcore_diagnostics_healthchecks", - "label": "microsoft_aspnetcore_diagnostics_healthchecks", + "id": "system_globalization", + "label": "system_globalization", "_origin": "semantic", - "community": 33, - "community_name": "Anichron.API.Settings", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", "external": true, "file_type": "concept", - "norm_label": "microsoft_aspnetcore_diagnostics_healthchecks", + "norm_label": "system_globalization", "source_file": "", "type": "external" }, { - "id": "microsoft_aspnetcore_http", - "label": "microsoft_aspnetcore_http", + "id": "system_globalization_cultureinfo", + "label": "system_globalization_cultureinfo", "_origin": "semantic", - "community": 33, - "community_name": "Anichron.API.Settings", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", "external": true, "file_type": "concept", - "norm_label": "microsoft_aspnetcore_http", + "norm_label": "system_globalization_cultureinfo", "source_file": "", "type": "external" }, { - "id": "microsoft_aspnetcore_http_json", - "label": "microsoft_aspnetcore_http_json", + "id": "system_identitymodel_tokens_jwt", + "label": "system_identitymodel_tokens_jwt", "_origin": "semantic", - "community": 33, - "community_name": "Anichron.API.Settings", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", "external": true, "file_type": "concept", - "norm_label": "microsoft_aspnetcore_http_json", + "norm_label": "system_identitymodel_tokens_jwt", "source_file": "", "type": "external" }, { - "id": "microsoft_aspnetcore_httpoverrides", - "label": "microsoft_aspnetcore_httpoverrides", + "id": "system_text", + "label": "system_text", "_origin": "semantic", - "community": 33, - "community_name": "Anichron.API.Settings", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", "external": true, "file_type": "concept", - "norm_label": "microsoft_aspnetcore_httpoverrides", + "norm_label": "system_text", "source_file": "", "type": "external" }, { - "id": "microsoft_extensions_diagnostics_healthchecks", - "label": "microsoft_extensions_diagnostics_healthchecks", + "id": "system_threading_ratelimiting", + "label": "system_threading_ratelimiting", "_origin": "semantic", - "community": 33, - "community_name": "Anichron.API.Settings", + "community": 196, + "community_name": "ServiceCollectionExtensions.cs", "external": true, "file_type": "concept", - "norm_label": "microsoft_extensions_diagnostics_healthchecks", + "norm_label": "system_threading_ratelimiting", "source_file": "", "type": "external" }, { - "id": "microsoft_identitymodel_tokens", - "label": "microsoft_identitymodel_tokens", + "id": "system_componentmodel_dataannotations", + "label": "system_componentmodel_dataannotations", + "_origin": "semantic", + "community": 22, + "community_name": "WorkerSettings", + "external": true, + "file_type": "concept", + "norm_label": "system_componentmodel_dataannotations", + "source_file": "", + "type": "external" + }, + { + "id": "microsoft_aspnetcore_diagnostics_healthchecks", + "label": "microsoft_aspnetcore_diagnostics_healthchecks", "_origin": "semantic", "community": 33, "community_name": "Anichron.API.Settings", "external": true, "file_type": "concept", - "norm_label": "microsoft_identitymodel_tokens", + "norm_label": "microsoft_aspnetcore_diagnostics_healthchecks", "source_file": "", "type": "external" }, { - "id": "system_globalization_cultureinfo", - "label": "system_globalization_cultureinfo", + "id": "microsoft_aspnetcore_http", + "label": "microsoft_aspnetcore_http", "_origin": "semantic", "community": 33, "community_name": "Anichron.API.Settings", "external": true, "file_type": "concept", - "norm_label": "system_globalization_cultureinfo", + "norm_label": "microsoft_aspnetcore_http", "source_file": "", "type": "external" }, { - "id": "system_identitymodel_tokens_jwt", - "label": "system_identitymodel_tokens_jwt", + "id": "microsoft_aspnetcore_http_json", + "label": "microsoft_aspnetcore_http_json", "_origin": "semantic", "community": 33, "community_name": "Anichron.API.Settings", "external": true, "file_type": "concept", - "norm_label": "system_identitymodel_tokens_jwt", + "norm_label": "microsoft_aspnetcore_http_json", "source_file": "", "type": "external" }, { - "id": "system_security_claims", - "label": "system_security_claims", + "id": "microsoft_aspnetcore_mvc", + "label": "microsoft_aspnetcore_mvc", "_origin": "semantic", "community": 33, "community_name": "Anichron.API.Settings", "external": true, "file_type": "concept", - "norm_label": "system_security_claims", + "norm_label": "microsoft_aspnetcore_mvc", "source_file": "", "type": "external" }, { - "id": "system_text", - "label": "system_text", + "id": "microsoft_extensions_diagnostics_healthchecks", + "label": "microsoft_extensions_diagnostics_healthchecks", "_origin": "semantic", "community": 33, "community_name": "Anichron.API.Settings", "external": true, "file_type": "concept", - "norm_label": "system_text", + "norm_label": "microsoft_extensions_diagnostics_healthchecks", "source_file": "", "type": "external" }, { - "id": "system_text_json", - "label": "system_text_json", + "id": "system_security_claims", + "label": "system_security_claims", "_origin": "semantic", "community": 33, "community_name": "Anichron.API.Settings", "external": true, "file_type": "concept", - "norm_label": "system_text_json", + "norm_label": "system_security_claims", "source_file": "", "type": "external" }, { - "id": "system_text_regularexpressions", - "label": "system_text_regularexpressions", + "id": "system_text_json", + "label": "system_text_json", "_origin": "semantic", "community": 33, "community_name": "Anichron.API.Settings", "external": true, "file_type": "concept", - "norm_label": "system_text_regularexpressions", + "norm_label": "system_text_json", "source_file": "", "type": "external" }, { - "id": "system_threading_ratelimiting", - "label": "system_threading_ratelimiting", + "id": "system_text_regularexpressions", + "label": "system_text_regularexpressions", "_origin": "semantic", "community": 33, "community_name": "Anichron.API.Settings", "external": true, "file_type": "concept", - "norm_label": "system_threading_ratelimiting", + "norm_label": "system_text_regularexpressions", "source_file": "", "type": "external" }, @@ -81474,26 +81656,26 @@ "type": "external" }, { - "id": "microsoft_extensions_configuration", - "label": "microsoft_extensions_configuration", + "id": "npgsql", + "label": "npgsql", "_origin": "semantic", "community": 36, "community_name": "Anichron.Core.Domain", "external": true, "file_type": "concept", - "norm_label": "microsoft_extensions_configuration", + "norm_label": "npgsql", "source_file": "", "type": "external" }, { - "id": "npgsql", - "label": "npgsql", + "id": "nsubstitute_exceptionextensions", + "label": "nsubstitute_exceptionextensions", "_origin": "semantic", "community": 36, "community_name": "Anichron.Core.Domain", "external": true, "file_type": "concept", - "norm_label": "npgsql", + "norm_label": "nsubstitute_exceptionextensions", "source_file": "", "type": "external" }, @@ -83269,7 +83451,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L64", + "source_location": "L65", "weight": 1.0 }, { @@ -83284,7 +83466,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L12", + "source_location": "L13", "weight": 1.0 }, { @@ -83299,7 +83481,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L22", + "source_location": "L23", "weight": 1.0 }, { @@ -83314,7 +83496,37 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L44", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_nullstoredhash_doesnotshortcircuit", + "target": "src_anichron_api_tests_unit_security_passwordhashertests_cs_fact", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "attribute", + "metadata": { + "ref_token": "Fact" + }, + "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", + "source_location": "L118", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_nullstoredhash_returnsfalse", + "target": "src_anichron_api_tests_unit_security_passwordhashertests_cs_fact", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "attribute", + "metadata": { + "ref_token": "Fact" + }, + "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", + "source_location": "L103", "weight": 1.0 }, { @@ -83329,7 +83541,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L75", + "source_location": "L76", "weight": 1.0 }, { @@ -83344,7 +83556,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L54", + "source_location": "L55", "weight": 1.0 }, { @@ -83569,7 +83781,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L171", + "source_location": "L217", "weight": 1.0 }, { @@ -83584,7 +83796,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L185", + "source_location": "L231", "weight": 1.0 }, { @@ -83599,7 +83811,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L200", + "source_location": "L247", "weight": 1.0 }, { @@ -83614,7 +83826,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L28", + "source_location": "L66", "weight": 1.0 }, { @@ -83629,7 +83841,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L44", + "source_location": "L82", "weight": 1.0 }, { @@ -83644,7 +83856,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L57", + "source_location": "L95", "weight": 1.0 }, { @@ -83659,7 +83871,22 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L73", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_savethrows_therevocationraninsidethefailedtransaction", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_fact", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "attribute", + "metadata": { + "ref_token": "Fact" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L274", "weight": 1.0 }, { @@ -83674,7 +83901,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L87", + "source_location": "L127", "weight": 1.0 }, { @@ -83689,7 +83916,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L114", + "source_location": "L155", "weight": 1.0 }, { @@ -83704,7 +83931,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L154", + "source_location": "L200", "weight": 1.0 }, { @@ -83719,7 +83946,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L128", + "source_location": "L169", "weight": 1.0 }, { @@ -83734,7 +83961,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L141", + "source_location": "L187", "weight": 1.0 }, { @@ -83749,7 +83976,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L100", + "source_location": "L140", "weight": 1.0 }, { @@ -83764,7 +83991,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L844", + "source_location": "L860", "weight": 1.0 }, { @@ -83779,7 +84006,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L856", + "source_location": "L872", "weight": 1.0 }, { @@ -83794,7 +84021,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L775", + "source_location": "L791", "weight": 1.0 }, { @@ -83809,7 +84036,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L890", + "source_location": "L906", "weight": 1.0 }, { @@ -83824,7 +84051,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L880", + "source_location": "L896", "weight": 1.0 }, { @@ -83839,7 +84066,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L785", + "source_location": "L801", "weight": 1.0 }, { @@ -83854,7 +84081,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L830", + "source_location": "L846", "weight": 1.0 }, { @@ -83869,7 +84096,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L813", + "source_location": "L829", "weight": 1.0 }, { @@ -83884,7 +84111,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L799", + "source_location": "L815", "weight": 1.0 }, { @@ -83899,7 +84126,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L868", + "source_location": "L884", "weight": 1.0 }, { @@ -83914,7 +84141,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L765", + "source_location": "L781", "weight": 1.0 }, { @@ -83929,7 +84156,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L635", + "source_location": "L651", "weight": 1.0 }, { @@ -83944,7 +84171,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L645", + "source_location": "L661", "weight": 1.0 }, { @@ -83959,7 +84186,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L655", + "source_location": "L671", "weight": 1.0 }, { @@ -83974,7 +84201,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L711", + "source_location": "L727", "weight": 1.0 }, { @@ -83989,7 +84216,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L745", + "source_location": "L761", "weight": 1.0 }, { @@ -84004,7 +84231,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L726", + "source_location": "L742", "weight": 1.0 }, { @@ -84019,7 +84246,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L671", + "source_location": "L687", "weight": 1.0 }, { @@ -84064,7 +84291,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L485", + "source_location": "L501", "weight": 1.0 }, { @@ -84079,7 +84306,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L503", + "source_location": "L519", "weight": 1.0 }, { @@ -84094,7 +84321,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L589", + "source_location": "L605", "weight": 1.0 }, { @@ -84139,7 +84366,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L571", + "source_location": "L587", "weight": 1.0 }, { @@ -84157,6 +84384,21 @@ "source_location": "L454", "weight": 1.0 }, + { + "source": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_unknownuser_verifiesagainstanullhashexactlyonce", + "target": "src_anichron_api_tests_unit_services_authservicetests_cs_fact", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "attribute", + "metadata": { + "ref_token": "Fact" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", + "source_location": "L473", + "weight": 1.0 + }, { "source": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_validcredentials_returnsokwithtokens", "target": "src_anichron_api_tests_unit_services_authservicetests_cs_fact", @@ -84184,7 +84426,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L542", + "source_location": "L558", "weight": 1.0 }, { @@ -84214,7 +84456,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L468", + "source_location": "L484", "weight": 1.0 }, { @@ -84229,7 +84471,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L528", + "source_location": "L544", "weight": 1.0 }, { @@ -84244,7 +84486,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L556", + "source_location": "L572", "weight": 1.0 }, { @@ -84259,7 +84501,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L607", + "source_location": "L623", "weight": 1.0 }, { @@ -84499,7 +84741,7 @@ "ref_token": "Fact" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L620", + "source_location": "L636", "weight": 1.0 }, { @@ -89689,7 +89931,7 @@ "ref_token": "InlineData" }, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L32", + "source_location": "L33", "weight": 1.0 }, { @@ -89719,7 +89961,7 @@ "ref_token": "InlineData" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L900", + "source_location": "L916", "weight": 1.0 }, { @@ -89734,7 +89976,7 @@ "ref_token": "InlineData" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L688", + "source_location": "L704", "weight": 1.0 }, { @@ -90664,7 +90906,7 @@ "ref_token": "Theory" }, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L32", + "source_location": "L33", "weight": 1.0 }, { @@ -90694,7 +90936,7 @@ "ref_token": "Theory" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L900", + "source_location": "L916", "weight": 1.0 }, { @@ -90709,7 +90951,7 @@ "ref_token": "Theory" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L688", + "source_location": "L704", "weight": 1.0 }, { @@ -92032,7 +92274,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L19", + "source_location": "L23", "weight": 1.0 }, { @@ -92044,7 +92286,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L41", + "source_location": "L66", "weight": 1.0 }, { @@ -92056,7 +92298,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L32", + "source_location": "L50", "weight": 1.0 }, { @@ -92152,7 +92394,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L56", + "source_location": "L63", "weight": 1.0 }, { @@ -92164,7 +92406,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L65", + "source_location": "L78", "weight": 1.0 }, { @@ -92200,7 +92442,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L210", + "source_location": "L216", "weight": 1.0 }, { @@ -92212,7 +92454,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L237", + "source_location": "L243", "weight": 1.0 }, { @@ -92224,7 +92466,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L240", + "source_location": "L246", "weight": 1.0 }, { @@ -92236,7 +92478,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L240", + "source_location": "L246", "weight": 1.0 }, { @@ -92248,7 +92490,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L182", + "source_location": "L188", "weight": 1.0 }, { @@ -92260,7 +92502,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L197", + "source_location": "L203", "weight": 1.0 }, { @@ -92272,7 +92514,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L144", + "source_location": "L150", "weight": 1.0 }, { @@ -92284,7 +92526,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L153", + "source_location": "L159", "weight": 1.0 }, { @@ -92296,7 +92538,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L166", + "source_location": "L172", "weight": 1.0 }, { @@ -92308,7 +92550,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L106", + "source_location": "L104", "weight": 1.0 }, { @@ -92320,7 +92562,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L118", + "source_location": "L116", "weight": 1.0 }, { @@ -92332,7 +92574,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L75", + "source_location": "L73", "weight": 1.0 }, { @@ -92344,7 +92586,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L77", + "source_location": "L75", "weight": 1.0 }, { @@ -96868,7 +97110,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L175", + "source_location": "L221", "weight": 1.0 }, { @@ -96880,7 +97122,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L188", + "source_location": "L234", "weight": 1.0 }, { @@ -96892,7 +97134,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L203", + "source_location": "L250", "weight": 1.0 }, { @@ -96904,7 +97146,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L31", + "source_location": "L69", "weight": 1.0 }, { @@ -96916,7 +97158,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L47", + "source_location": "L85", "weight": 1.0 }, { @@ -96928,7 +97170,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L60", + "source_location": "L98", "weight": 1.0 }, { @@ -96940,7 +97182,19 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L76", + "source_location": "L114", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_savethrows_therevocationraninsidethefailedtransaction", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_testfixture", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L277", "weight": 1.0 }, { @@ -96952,7 +97206,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L91", + "source_location": "L131", "weight": 1.0 }, { @@ -96964,7 +97218,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L117", + "source_location": "L158", "weight": 1.0 }, { @@ -96976,7 +97230,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L157", + "source_location": "L203", "weight": 1.0 }, { @@ -96988,7 +97242,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L131", + "source_location": "L172", "weight": 1.0 }, { @@ -97000,7 +97254,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L144", + "source_location": "L190", "weight": 1.0 }, { @@ -97012,7 +97266,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L103", + "source_location": "L143", "weight": 1.0 }, { @@ -97024,7 +97278,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L847", + "source_location": "L863", "weight": 1.0 }, { @@ -97036,7 +97290,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L847", + "source_location": "L863", "weight": 1.0 }, { @@ -97048,7 +97302,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L847", + "source_location": "L863", "weight": 1.0 }, { @@ -97060,7 +97314,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L848", + "source_location": "L864", "weight": 1.0 }, { @@ -97072,7 +97326,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L859", + "source_location": "L875", "weight": 1.0 }, { @@ -97084,7 +97338,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L859", + "source_location": "L875", "weight": 1.0 }, { @@ -97096,7 +97350,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L859", + "source_location": "L875", "weight": 1.0 }, { @@ -97108,7 +97362,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L860", + "source_location": "L876", "weight": 1.0 }, { @@ -97120,7 +97374,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L778", + "source_location": "L794", "weight": 1.0 }, { @@ -97132,7 +97386,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L778", + "source_location": "L794", "weight": 1.0 }, { @@ -97144,7 +97398,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L778", + "source_location": "L794", "weight": 1.0 }, { @@ -97156,7 +97410,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L905", + "source_location": "L921", "weight": 1.0 }, { @@ -97168,7 +97422,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L905", + "source_location": "L921", "weight": 1.0 }, { @@ -97180,7 +97434,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L905", + "source_location": "L921", "weight": 1.0 }, { @@ -97192,7 +97446,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L893", + "source_location": "L909", "weight": 1.0 }, { @@ -97204,7 +97458,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L893", + "source_location": "L909", "weight": 1.0 }, { @@ -97216,7 +97470,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L883", + "source_location": "L899", "weight": 1.0 }, { @@ -97228,7 +97482,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L883", + "source_location": "L899", "weight": 1.0 }, { @@ -97240,7 +97494,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L788", + "source_location": "L804", "weight": 1.0 }, { @@ -97252,7 +97506,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L788", + "source_location": "L804", "weight": 1.0 }, { @@ -97264,7 +97518,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L833", + "source_location": "L849", "weight": 1.0 }, { @@ -97276,7 +97530,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L833", + "source_location": "L849", "weight": 1.0 }, { @@ -97288,7 +97542,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L817", + "source_location": "L833", "weight": 1.0 }, { @@ -97300,7 +97554,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L803", + "source_location": "L819", "weight": 1.0 }, { @@ -97312,7 +97566,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L871", + "source_location": "L887", "weight": 1.0 }, { @@ -97324,7 +97578,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L871", + "source_location": "L887", "weight": 1.0 }, { @@ -97336,7 +97590,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L871", + "source_location": "L887", "weight": 1.0 }, { @@ -97348,7 +97602,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L872", + "source_location": "L888", "weight": 1.0 }, { @@ -97360,7 +97614,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L768", + "source_location": "L784", "weight": 1.0 }, { @@ -97372,7 +97626,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L768", + "source_location": "L784", "weight": 1.0 }, { @@ -97384,7 +97638,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L768", + "source_location": "L784", "weight": 1.0 }, { @@ -97396,7 +97650,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L696", + "source_location": "L712", "weight": 1.0 }, { @@ -97408,7 +97662,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L696", + "source_location": "L712", "weight": 1.0 }, { @@ -97420,7 +97674,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L696", + "source_location": "L712", "weight": 1.0 }, { @@ -97432,7 +97686,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L696", + "source_location": "L712", "weight": 1.0 }, { @@ -97444,7 +97698,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L638", + "source_location": "L654", "weight": 1.0 }, { @@ -97456,7 +97710,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L638", + "source_location": "L654", "weight": 1.0 }, { @@ -97468,7 +97722,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L648", + "source_location": "L664", "weight": 1.0 }, { @@ -97480,7 +97734,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L648", + "source_location": "L664", "weight": 1.0 }, { @@ -97492,7 +97746,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L659", + "source_location": "L675", "weight": 1.0 }, { @@ -97504,7 +97758,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L659", + "source_location": "L675", "weight": 1.0 }, { @@ -97516,7 +97770,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L716", + "source_location": "L732", "weight": 1.0 }, { @@ -97528,7 +97782,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L716", + "source_location": "L732", "weight": 1.0 }, { @@ -97540,7 +97794,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L716", + "source_location": "L732", "weight": 1.0 }, { @@ -97552,7 +97806,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L750", + "source_location": "L766", "weight": 1.0 }, { @@ -97564,7 +97818,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L750", + "source_location": "L766", "weight": 1.0 }, { @@ -97576,7 +97830,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L750", + "source_location": "L766", "weight": 1.0 }, { @@ -97588,7 +97842,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L731", + "source_location": "L747", "weight": 1.0 }, { @@ -97600,7 +97854,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L731", + "source_location": "L747", "weight": 1.0 }, { @@ -97612,7 +97866,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L731", + "source_location": "L747", "weight": 1.0 }, { @@ -97624,7 +97878,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L676", + "source_location": "L692", "weight": 1.0 }, { @@ -97636,7 +97890,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L676", + "source_location": "L692", "weight": 1.0 }, { @@ -97672,7 +97926,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L489", + "source_location": "L505", "weight": 1.0 }, { @@ -97684,7 +97938,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L489", + "source_location": "L505", "weight": 1.0 }, { @@ -97696,7 +97950,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L489", + "source_location": "L505", "weight": 1.0 }, { @@ -97708,7 +97962,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L512", + "source_location": "L528", "weight": 1.0 }, { @@ -97720,7 +97974,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L512", + "source_location": "L528", "weight": 1.0 }, { @@ -97732,7 +97986,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L512", + "source_location": "L528", "weight": 1.0 }, { @@ -97744,7 +97998,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L512", + "source_location": "L528", "weight": 1.0 }, { @@ -97756,7 +98010,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L593", + "source_location": "L609", "weight": 1.0 }, { @@ -97768,7 +98022,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L593", + "source_location": "L609", "weight": 1.0 }, { @@ -97780,7 +98034,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L593", + "source_location": "L609", "weight": 1.0 }, { @@ -97840,7 +98094,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L575", + "source_location": "L591", "weight": 1.0 }, { @@ -97852,7 +98106,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L575", + "source_location": "L591", "weight": 1.0 }, { @@ -97864,7 +98118,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L575", + "source_location": "L591", "weight": 1.0 }, { @@ -97891,6 +98145,18 @@ "source_location": "L457", "weight": 1.0 }, + { + "source": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_unknownuser_verifiesagainstanullhashexactlyonce", + "target": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_testfixture", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", + "source_location": "L476", + "weight": 1.0 + }, { "source": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_validcredentials_returnsokwithtokens", "target": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_testfixture", @@ -97948,7 +98214,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L546", + "source_location": "L562", "weight": 1.0 }, { @@ -97960,7 +98226,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L546", + "source_location": "L562", "weight": 1.0 }, { @@ -97972,7 +98238,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L546", + "source_location": "L562", "weight": 1.0 }, { @@ -98008,7 +98274,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L472", + "source_location": "L488", "weight": 1.0 }, { @@ -98020,7 +98286,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L472", + "source_location": "L488", "weight": 1.0 }, { @@ -98032,7 +98298,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L533", + "source_location": "L549", "weight": 1.0 }, { @@ -98044,7 +98310,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L533", + "source_location": "L549", "weight": 1.0 }, { @@ -98056,7 +98322,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L560", + "source_location": "L576", "weight": 1.0 }, { @@ -98068,7 +98334,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L560", + "source_location": "L576", "weight": 1.0 }, { @@ -98080,7 +98346,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L560", + "source_location": "L576", "weight": 1.0 }, { @@ -98092,7 +98358,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L610", + "source_location": "L626", "weight": 1.0 }, { @@ -98104,7 +98370,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L611", + "source_location": "L627", "weight": 1.0 }, { @@ -98116,7 +98382,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L611", + "source_location": "L627", "weight": 1.0 }, { @@ -98584,7 +98850,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L623", + "source_location": "L639", "weight": 1.0 }, { @@ -98611,6 +98877,18 @@ "source_location": "L85", "weight": 1.0 }, + { + "source": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_testfixture_withpasswordvalid", + "target": "src_anichron_api_security_passwordhasher_anichron_api_security_ipasswordhasher_verify", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", + "source_location": "L61", + "weight": 1.0 + }, { "source": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_testfixture_withtokenissued", "target": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_issueasync", @@ -107518,7 +107796,7 @@ "ref_token": "IClock" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L17", + "source_location": "L18", "weight": 1.0 }, { @@ -109648,7 +109926,7 @@ "ref_token": "ITokenService" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L16", + "source_location": "L17", "weight": 1.0 }, { @@ -109828,7 +110106,7 @@ "ref_token": "IUnitOfWork" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L15", + "source_location": "L16", "weight": 1.0 }, { @@ -110083,7 +110361,7 @@ "ref_token": "IUserRepository" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L14", + "source_location": "L15", "weight": 1.0 }, { @@ -110308,7 +110586,7 @@ "ref_token": "Instant" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L10", + "source_location": "L11", "weight": 1.0 }, { @@ -111937,7 +112215,7 @@ "confidence_score": 1.0, "context": "field", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L14", + "source_location": "L15", "weight": 1.0 }, { @@ -111949,7 +112227,7 @@ "confidence_score": 1.0, "context": "field", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L15", + "source_location": "L16", "weight": 1.0 }, { @@ -111961,7 +112239,31 @@ "confidence_score": 1.0, "context": "field", "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L16", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_testfixture", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_testfixture_revokedinsidetransaction", + "relation": "defines", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "field", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_testfixture", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_testfixture_savedinsidetransaction", + "relation": "defines", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "field", + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L24", "weight": 1.0 }, { @@ -115345,7 +115647,7 @@ "ref_token": "ArgumentNullException" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L897", + "source_location": "L913", "weight": 1.0 }, { @@ -115360,7 +115662,7 @@ "ref_token": "ArgumentNullException" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L887", + "source_location": "L903", "weight": 1.0 }, { @@ -115375,7 +115677,7 @@ "ref_token": "ArgumentNullException" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L642", + "source_location": "L658", "weight": 1.0 }, { @@ -115390,7 +115692,7 @@ "ref_token": "ArgumentNullException" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L652", + "source_location": "L668", "weight": 1.0 }, { @@ -115705,7 +116007,7 @@ "ref_token": "AuthResult" }, "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L53", + "source_location": "L60", "weight": 1.0 }, { @@ -115765,7 +116067,7 @@ "ref_token": "AuthResult" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L200", + "source_location": "L206", "weight": 1.0 }, { @@ -115780,7 +116082,7 @@ "ref_token": "AuthResult" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L175", + "source_location": "L181", "weight": 1.0 }, { @@ -115795,7 +116097,7 @@ "ref_token": "AuthResult" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L125", + "source_location": "L123", "weight": 1.0 }, { @@ -115810,7 +116112,7 @@ "ref_token": "AuthResult" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L169", + "source_location": "L175", "weight": 1.0 }, { @@ -115825,7 +116127,7 @@ "ref_token": "AuthResult" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L67", + "source_location": "L65", "weight": 1.0 }, { @@ -116155,7 +116457,7 @@ "ref_token": "AuthTokens" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L153", + "source_location": "L159", "weight": 1.0 }, { @@ -116170,7 +116472,7 @@ "ref_token": "AuthTokens" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L169", + "source_location": "L175", "weight": 1.0 }, { @@ -116185,7 +116487,7 @@ "ref_token": "AuthTokens" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L118", + "source_location": "L116", "weight": 1.0 }, { @@ -117355,7 +117657,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L182", + "source_location": "L228", "weight": 1.0 }, { @@ -117370,7 +117672,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L197", + "source_location": "L244", "weight": 1.0 }, { @@ -117385,7 +117687,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L212", + "source_location": "L260", "weight": 1.0 }, { @@ -117400,7 +117702,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L33", + "source_location": "L71", "weight": 1.0 }, { @@ -117415,7 +117717,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L50", + "source_location": "L88", "weight": 1.0 }, { @@ -117430,7 +117732,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L62", + "source_location": "L100", "weight": 1.0 }, { @@ -117445,7 +117747,22 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L84", + "source_location": "L124", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_savethrows_therevocationraninsidethefailedtransaction", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_cancellationtoken", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "metadata": { + "ref_token": "CancellationToken" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L281", "weight": 1.0 }, { @@ -117460,7 +117777,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L97", + "source_location": "L137", "weight": 1.0 }, { @@ -117475,7 +117792,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L125", + "source_location": "L166", "weight": 1.0 }, { @@ -117490,7 +117807,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L164", + "source_location": "L210", "weight": 1.0 }, { @@ -117505,7 +117822,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L138", + "source_location": "L180", "weight": 1.0 }, { @@ -117520,7 +117837,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L151", + "source_location": "L197", "weight": 1.0 }, { @@ -117535,7 +117852,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L111", + "source_location": "L152", "weight": 1.0 }, { @@ -117550,7 +117867,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L758", + "source_location": "L774", "weight": 1.0 }, { @@ -117565,7 +117882,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L539", + "source_location": "L555", "weight": 1.0 }, { @@ -117580,7 +117897,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L568", + "source_location": "L584", "weight": 1.0 }, { @@ -117595,7 +117912,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L628", + "source_location": "L644", "weight": 1.0 }, { @@ -118870,7 +119187,7 @@ "ref_token": "Exception" }, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L61", + "source_location": "L62", "weight": 1.0 }, { @@ -118990,7 +119307,82 @@ "ref_token": "FormatException" }, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L51", + "source_location": "L52", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_usernotfound_returnsusernotfound", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_func", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "metadata": { + "ref_token": "Func" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L244", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_validuser_revokessessionsremovesuserandsaves", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_func", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "metadata": { + "ref_token": "Func" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L260", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_bothparamsnull_returnsuserwithoutsaving", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_func", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "metadata": { + "ref_token": "Func" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L124", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledtrue_revokessessionsandsaves", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_func", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "metadata": { + "ref_token": "Func" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L180", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_usernotfound_returnsusernotfound", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_func", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "metadata": { + "ref_token": "Func" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L152", "weight": 1.0 }, { @@ -119185,7 +119577,7 @@ "ref_token": "Guid" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L163", + "source_location": "L209", "weight": 1.0 }, { @@ -119200,7 +119592,7 @@ "ref_token": "Guid" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L150", + "source_location": "L196", "weight": 1.0 }, { @@ -122590,7 +122982,7 @@ "ref_token": "Instant" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L163", + "source_location": "L209", "weight": 1.0 }, { @@ -122605,7 +122997,7 @@ "ref_token": "Instant" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L150", + "source_location": "L196", "weight": 1.0 }, { @@ -122620,7 +123012,7 @@ "ref_token": "Instant" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L758", + "source_location": "L774", "weight": 1.0 }, { @@ -122635,7 +123027,7 @@ "ref_token": "Instant" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L539", + "source_location": "L555", "weight": 1.0 }, { @@ -122650,7 +123042,7 @@ "ref_token": "Instant" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L568", + "source_location": "L584", "weight": 1.0 }, { @@ -122788,6 +123180,21 @@ "source_location": "L79", "weight": 1.0 }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_savethrows_therevocationraninsidethefailedtransaction", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_invalidoperationexception", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "metadata": { + "ref_token": "InvalidOperationException" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L290", + "weight": 1.0 + }, { "source": "src_anichron_api_tests_unit_services_tokenservicetests_anichron_api_tests_unit_services_tokenservicetests_refreshasync_savechangesthrows_propagatesexception", "target": "src_anichron_api_tests_unit_services_tokenservicetests_cs_invalidoperationexception", @@ -124858,6 +125265,81 @@ "source_location": "L67", "weight": 1.0 }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_usernotfound_returnsusernotfound", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_task", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "metadata": { + "ref_token": "Task" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L244", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_validuser_revokessessionsremovesuserandsaves", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_task", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "metadata": { + "ref_token": "Task" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L260", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_bothparamsnull_returnsuserwithoutsaving", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_task", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "metadata": { + "ref_token": "Task" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L124", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledtrue_revokessessionsandsaves", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_task", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "metadata": { + "ref_token": "Task" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L180", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_usernotfound_returnsusernotfound", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_task", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "metadata": { + "ref_token": "Task" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L152", + "weight": 1.0 + }, { "source": "src_anichron_core_data_anichrondbcontext_anichron_core_data_anichrondbcontext_executeintransactionasync", "target": "src_anichron_core_data_anichrondbcontext_cs_task", @@ -124975,7 +125457,7 @@ "ref_token": "UnreachableException" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L877", + "source_location": "L893", "weight": 1.0 }, { @@ -125155,7 +125637,7 @@ "ref_token": "User" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L181", + "source_location": "L227", "weight": 1.0 }, { @@ -125170,7 +125652,7 @@ "ref_token": "User" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L196", + "source_location": "L242", "weight": 1.0 }, { @@ -125185,7 +125667,7 @@ "ref_token": "User" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L818", + "source_location": "L834", "weight": 1.0 }, { @@ -125200,7 +125682,7 @@ "ref_token": "User" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L804", + "source_location": "L820", "weight": 1.0 }, { @@ -125215,7 +125697,7 @@ "ref_token": "User" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L568", + "source_location": "L584", "weight": 1.0 }, { @@ -133651,6 +134133,23 @@ "source_location": "L2", "weight": 1.0 }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests", + "target": "nsubstitute_exceptionextensions", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "metadata": { + "using_kind": "namespace", + "target_fqn": "NSubstitute.ExceptionExtensions", + "scope_kind": "file" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L5", + "weight": 1.0 + }, { "source": "src_anichron_api_globalusings", "target": "nodatime", @@ -134552,6 +135051,23 @@ "source_location": "L7", "weight": 1.0 }, + { + "source": "src_anichron_api_tests_unit_security_passwordhashertests", + "target": "system_diagnostics", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "metadata": { + "using_kind": "namespace", + "target_fqn": "System.Diagnostics", + "scope_kind": "file" + }, + "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", + "source_location": "L2", + "weight": 1.0 + }, { "source": "src_anichron_api_tests_unit_services_authservicetests", "target": "system_diagnostics", @@ -140446,7 +140962,7 @@ "ref_token": "AuthError" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L900", + "source_location": "L916", "weight": 1.0 }, { @@ -140461,7 +140977,7 @@ "ref_token": "AuthError" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L688", + "source_location": "L704", "weight": 1.0 }, { @@ -141271,7 +141787,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L53", + "source_location": "L60", "weight": 1.0 }, { @@ -141391,7 +141907,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L200", + "source_location": "L206", "weight": 1.0 }, { @@ -141406,7 +141922,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L175", + "source_location": "L181", "weight": 1.0 }, { @@ -141421,7 +141937,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L125", + "source_location": "L123", "weight": 1.0 }, { @@ -141436,7 +141952,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L169", + "source_location": "L175", "weight": 1.0 }, { @@ -141451,7 +141967,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L67", + "source_location": "L65", "weight": 1.0 }, { @@ -141466,7 +141982,7 @@ "ref_token": "CancellationToken" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L172", + "source_location": "L178", "weight": 1.0 }, { @@ -144391,7 +144907,7 @@ "ref_token": "Guid" }, "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L53", + "source_location": "L60", "weight": 1.0 }, { @@ -144481,7 +144997,7 @@ "ref_token": "Guid" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L175", + "source_location": "L181", "weight": 1.0 }, { @@ -148621,7 +149137,7 @@ "ref_token": "PostgresException" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L243", + "source_location": "L249", "weight": 1.0 }, { @@ -149461,7 +149977,7 @@ "ref_token": "AdminUserService" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L21", + "source_location": "L59", "weight": 1.0 }, { @@ -149551,7 +150067,7 @@ "ref_token": "AuthError" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L243", + "source_location": "L249", "weight": 1.0 }, { @@ -151456,7 +151972,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L53", + "source_location": "L60", "weight": 1.0 }, { @@ -151576,7 +152092,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L200", + "source_location": "L206", "weight": 1.0 }, { @@ -151591,7 +152107,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L175", + "source_location": "L181", "weight": 1.0 }, { @@ -151606,7 +152122,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L125", + "source_location": "L123", "weight": 1.0 }, { @@ -151621,7 +152137,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L169", + "source_location": "L175", "weight": 1.0 }, { @@ -151636,7 +152152,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L67", + "source_location": "L65", "weight": 1.0 }, { @@ -151651,7 +152167,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L172", + "source_location": "L178", "weight": 1.0 }, { @@ -153316,37 +153832,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L171", - "weight": 1.0 - }, - { - "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_usernotfound_returnsusernotfound", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_task", - "relation": "references", - "_origin": "ast", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "context": "return_type", - "metadata": { - "ref_token": "Task" - }, - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L185", - "weight": 1.0 - }, - { - "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_validuser_revokessessionsremovesuserandsaves", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_task", - "relation": "references", - "_origin": "ast", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "context": "return_type", - "metadata": { - "ref_token": "Task" - }, - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L200", + "source_location": "L217", "weight": 1.0 }, { @@ -153361,7 +153847,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L28", + "source_location": "L66", "weight": 1.0 }, { @@ -153376,7 +153862,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L44", + "source_location": "L82", "weight": 1.0 }, { @@ -153391,11 +153877,11 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L57", + "source_location": "L95", "weight": 1.0 }, { - "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_bothparamsnull_returnsuserwithoutsaving", + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_savethrows_therevocationraninsidethefailedtransaction", "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_task", "relation": "references", "_origin": "ast", @@ -153406,7 +153892,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L73", + "source_location": "L274", "weight": 1.0 }, { @@ -153421,7 +153907,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L87", + "source_location": "L127", "weight": 1.0 }, { @@ -153436,7 +153922,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L114", + "source_location": "L155", "weight": 1.0 }, { @@ -153451,22 +153937,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L154", - "weight": 1.0 - }, - { - "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledtrue_revokessessionsandsaves", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_task", - "relation": "references", - "_origin": "ast", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "context": "return_type", - "metadata": { - "ref_token": "Task" - }, - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L128", + "source_location": "L200", "weight": 1.0 }, { @@ -153481,22 +153952,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L141", - "weight": 1.0 - }, - { - "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_usernotfound_returnsusernotfound", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_cs_task", - "relation": "references", - "_origin": "ast", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "context": "return_type", - "metadata": { - "ref_token": "Task" - }, - "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L100", + "source_location": "L187", "weight": 1.0 }, { @@ -153511,7 +153967,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L844", + "source_location": "L860", "weight": 1.0 }, { @@ -153526,7 +153982,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L856", + "source_location": "L872", "weight": 1.0 }, { @@ -153541,7 +153997,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L775", + "source_location": "L791", "weight": 1.0 }, { @@ -153556,7 +154012,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L900", + "source_location": "L916", "weight": 1.0 }, { @@ -153571,7 +154027,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L890", + "source_location": "L906", "weight": 1.0 }, { @@ -153586,7 +154042,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L880", + "source_location": "L896", "weight": 1.0 }, { @@ -153601,7 +154057,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L785", + "source_location": "L801", "weight": 1.0 }, { @@ -153616,7 +154072,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L830", + "source_location": "L846", "weight": 1.0 }, { @@ -153631,7 +154087,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L813", + "source_location": "L829", "weight": 1.0 }, { @@ -153646,7 +154102,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L799", + "source_location": "L815", "weight": 1.0 }, { @@ -153661,7 +154117,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L868", + "source_location": "L884", "weight": 1.0 }, { @@ -153676,7 +154132,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L765", + "source_location": "L781", "weight": 1.0 }, { @@ -153691,7 +154147,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L688", + "source_location": "L704", "weight": 1.0 }, { @@ -153706,7 +154162,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L635", + "source_location": "L651", "weight": 1.0 }, { @@ -153721,7 +154177,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L645", + "source_location": "L661", "weight": 1.0 }, { @@ -153736,7 +154192,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L655", + "source_location": "L671", "weight": 1.0 }, { @@ -153751,7 +154207,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L711", + "source_location": "L727", "weight": 1.0 }, { @@ -153766,7 +154222,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L745", + "source_location": "L761", "weight": 1.0 }, { @@ -153781,7 +154237,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L726", + "source_location": "L742", "weight": 1.0 }, { @@ -153796,7 +154252,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L671", + "source_location": "L687", "weight": 1.0 }, { @@ -153811,7 +154267,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L485", + "source_location": "L501", "weight": 1.0 }, { @@ -153826,7 +154282,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L503", + "source_location": "L519", "weight": 1.0 }, { @@ -153841,7 +154297,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L589", + "source_location": "L605", "weight": 1.0 }, { @@ -153886,7 +154342,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L571", + "source_location": "L587", "weight": 1.0 }, { @@ -153904,6 +154360,21 @@ "source_location": "L454", "weight": 1.0 }, + { + "source": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_unknownuser_verifiesagainstanullhashexactlyonce", + "target": "src_anichron_api_tests_unit_services_authservicetests_cs_task", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "metadata": { + "ref_token": "Task" + }, + "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", + "source_location": "L473", + "weight": 1.0 + }, { "source": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_validcredentials_returnsokwithtokens", "target": "src_anichron_api_tests_unit_services_authservicetests_cs_task", @@ -153931,7 +154402,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L542", + "source_location": "L558", "weight": 1.0 }, { @@ -153961,7 +154432,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L468", + "source_location": "L484", "weight": 1.0 }, { @@ -153976,7 +154447,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L528", + "source_location": "L544", "weight": 1.0 }, { @@ -153991,7 +154462,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L556", + "source_location": "L572", "weight": 1.0 }, { @@ -154006,7 +154477,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L607", + "source_location": "L623", "weight": 1.0 }, { @@ -154261,7 +154732,7 @@ "ref_token": "Task" }, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L620", + "source_location": "L636", "weight": 1.0 }, { @@ -160764,7 +161235,7 @@ "ref_token": "IPasswordHasher" }, "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L14", + "source_location": "L18", "weight": 1.0 }, { @@ -167470,7 +167941,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L14", + "source_location": "L18", "weight": 1.0 }, { @@ -173960,7 +174431,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L3", + "source_location": "L4", "weight": 1.0 }, { @@ -173971,7 +174442,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L5", + "source_location": "L6", "weight": 1.0 }, { @@ -174048,7 +174519,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L6", + "source_location": "L7", "weight": 1.0 }, { @@ -174059,7 +174530,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L8", + "source_location": "L9", "weight": 1.0 }, { @@ -174070,7 +174541,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L12", + "source_location": "L13", "weight": 1.0 }, { @@ -202679,7 +203150,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L16", + "source_location": "L20", "weight": 1.0 }, { @@ -202690,7 +203161,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L27", + "source_location": "L31", "weight": 1.0 }, { @@ -202701,7 +203172,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L36", + "source_location": "L61", "weight": 1.0 }, { @@ -202712,7 +203183,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L49", + "source_location": "L74", "weight": 1.0 }, { @@ -202734,7 +203205,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L11", + "source_location": "L15", "weight": 1.0 }, { @@ -202866,7 +203337,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L53", + "source_location": "L60", "weight": 1.0 }, { @@ -202954,7 +203425,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L122", + "source_location": "L120", "weight": 1.0 }, { @@ -202965,7 +203436,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L125", + "source_location": "L123", "weight": 1.0 }, { @@ -202976,7 +203447,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L169", + "source_location": "L175", "weight": 1.0 }, { @@ -202987,7 +203458,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L172", + "source_location": "L178", "weight": 1.0 }, { @@ -202998,7 +203469,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L175", + "source_location": "L181", "weight": 1.0 }, { @@ -203009,7 +203480,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L200", + "source_location": "L206", "weight": 1.0 }, { @@ -203020,7 +203491,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L243", + "source_location": "L249", "weight": 1.0 }, { @@ -203031,7 +203502,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L67", + "source_location": "L65", "weight": 1.0 }, { @@ -205069,6 +205540,28 @@ "source_location": "L37", "weight": 1.0 }, + { + "source": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests", + "target": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_nullstoredhash_returnsfalse", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", + "source_location": "L103", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests", + "target": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_nullstoredhash_doesnotshortcircuit", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", + "source_location": "L118", + "weight": 1.0 + }, { "source": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests", "target": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_hash_validpassword_returnsbase64stringofexpectedlength", @@ -205077,7 +205570,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L12", + "source_location": "L13", "weight": 1.0 }, { @@ -205088,7 +205581,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L22", + "source_location": "L23", "weight": 1.0 }, { @@ -205099,7 +205592,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L32", + "source_location": "L33", "weight": 1.0 }, { @@ -205110,7 +205603,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L44", + "source_location": "L45", "weight": 1.0 }, { @@ -205121,7 +205614,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L54", + "source_location": "L55", "weight": 1.0 }, { @@ -205132,7 +205625,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L64", + "source_location": "L65", "weight": 1.0 }, { @@ -205143,7 +205636,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L75", + "source_location": "L76", "weight": 1.0 }, { @@ -205335,145 +205828,156 @@ }, { "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_usernotfound_returnsusernotfound", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_bothparamsnull_returnsuserwithoutsaving", "relation": "method", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L100", + "source_location": "L111", "weight": 1.0 }, { "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisadmin_updatesuserandreturnsupdateduser", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_selfmodification_returnscannotmodifyself", "relation": "method", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L114", + "source_location": "L127", "weight": 1.0 }, { "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledtrue_revokessessionsandsaves", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_usernotfound_returnsusernotfound", "relation": "method", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L128", + "source_location": "L140", "weight": 1.0 }, { "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledtrue_whenalreadydisabled_doesnotrevokesessionsbutsaves", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisadmin_updatesuserandreturnsupdateduser", "relation": "method", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L141", + "source_location": "L155", "weight": 1.0 }, { "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledfalse_doesnotrevokesessionsbutsaves", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledtrue_revokessessionsandsaves", "relation": "method", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L154", + "source_location": "L169", "weight": 1.0 }, { "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_selfdeletion_returnscannotmodifyself", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledtrue_whenalreadydisabled_doesnotrevokesessionsbutsaves", "relation": "method", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L171", + "source_location": "L187", "weight": 1.0 }, { "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_usernotfound_returnsusernotfound", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_setisdisabledfalse_doesnotrevokesessionsbutsaves", "relation": "method", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L185", + "source_location": "L200", "weight": 1.0 }, { "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_validuser_revokessessionsremovesuserandsaves", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_selfdeletion_returnscannotmodifyself", "relation": "method", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L200", + "source_location": "L217", "weight": 1.0 }, { "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_getallasync_returnsallusersfromrepository", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_usernotfound_returnsusernotfound", "relation": "method", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L28", + "source_location": "L231", "weight": 1.0 }, { "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_getbyidasync_userfound_returnsuser", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_deleteasync_validuser_revokessessionsremovesuserandsaves", "relation": "method", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L44", + "source_location": "L247", "weight": 1.0 }, { "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_getbyidasync_usernotfound_returnsnull", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_savethrows_therevocationraninsidethefailedtransaction", "relation": "method", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L57", + "source_location": "L274", "weight": 1.0 }, { "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_bothparamsnull_returnsuserwithoutsaving", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_getallasync_returnsallusersfromrepository", "relation": "method", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L73", + "source_location": "L66", "weight": 1.0 }, { "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests", - "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_updateasync_selfmodification_returnscannotmodifyself", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_getbyidasync_userfound_returnsuser", "relation": "method", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L87", + "source_location": "L82", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests", + "target": "src_anichron_api_tests_unit_services_adminuserservicetests_anichron_api_tests_unit_services_adminuserservicetests_getbyidasync_usernotfound_returnsnull", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", + "source_location": "L95", "weight": 1.0 }, { @@ -205484,7 +205988,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs", - "source_location": "L21", + "source_location": "L59", "weight": 1.0 }, { @@ -205751,6 +206255,17 @@ "source_location": "L454", "weight": 1.0 }, + { + "source": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests", + "target": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_unknownuser_verifiesagainstanullhashexactlyonce", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", + "source_location": "L473", + "weight": 1.0 + }, { "source": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests", "target": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_authservicetests_loginasync_wrongpassword_returnsinvalidcredentials", @@ -205759,7 +206274,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L468", + "source_location": "L484", "weight": 1.0 }, { @@ -205770,7 +206285,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L485", + "source_location": "L501", "weight": 1.0 }, { @@ -205781,7 +206296,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L503", + "source_location": "L519", "weight": 1.0 }, { @@ -205792,7 +206307,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L528", + "source_location": "L544", "weight": 1.0 }, { @@ -205803,7 +206318,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L542", + "source_location": "L558", "weight": 1.0 }, { @@ -205814,7 +206329,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L556", + "source_location": "L572", "weight": 1.0 }, { @@ -205825,7 +206340,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L571", + "source_location": "L587", "weight": 1.0 }, { @@ -205836,7 +206351,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L589", + "source_location": "L605", "weight": 1.0 }, { @@ -205847,7 +206362,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L607", + "source_location": "L623", "weight": 1.0 }, { @@ -205858,7 +206373,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L620", + "source_location": "L636", "weight": 1.0 }, { @@ -205869,7 +206384,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L635", + "source_location": "L651", "weight": 1.0 }, { @@ -205880,7 +206395,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L645", + "source_location": "L661", "weight": 1.0 }, { @@ -205891,7 +206406,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L655", + "source_location": "L671", "weight": 1.0 }, { @@ -205902,7 +206417,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L671", + "source_location": "L687", "weight": 1.0 }, { @@ -205913,7 +206428,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L688", + "source_location": "L704", "weight": 1.0 }, { @@ -205924,7 +206439,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L711", + "source_location": "L727", "weight": 1.0 }, { @@ -205935,7 +206450,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L726", + "source_location": "L742", "weight": 1.0 }, { @@ -205946,7 +206461,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L745", + "source_location": "L761", "weight": 1.0 }, { @@ -205957,7 +206472,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L765", + "source_location": "L781", "weight": 1.0 }, { @@ -205968,7 +206483,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L775", + "source_location": "L791", "weight": 1.0 }, { @@ -205979,7 +206494,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L785", + "source_location": "L801", "weight": 1.0 }, { @@ -205990,7 +206505,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L799", + "source_location": "L815", "weight": 1.0 }, { @@ -206001,7 +206516,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L813", + "source_location": "L829", "weight": 1.0 }, { @@ -206012,7 +206527,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L830", + "source_location": "L846", "weight": 1.0 }, { @@ -206023,7 +206538,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L844", + "source_location": "L860", "weight": 1.0 }, { @@ -206034,7 +206549,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L856", + "source_location": "L872", "weight": 1.0 }, { @@ -206045,7 +206560,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L868", + "source_location": "L884", "weight": 1.0 }, { @@ -206056,7 +206571,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L880", + "source_location": "L896", "weight": 1.0 }, { @@ -206067,7 +206582,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L890", + "source_location": "L906", "weight": 1.0 }, { @@ -206078,7 +206593,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L900", + "source_location": "L916", "weight": 1.0 }, { @@ -214046,31 +214561,43 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L58", + "source_location": "L65", "weight": 1.0 }, { "source": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice_deleteasync", - "target": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_markallsessionsrevokedasync", + "target": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_iuserrepository_remove", "relation": "calls", "_origin": "ast", "confidence": "INFERRED", "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L62", + "source_location": "L71", "weight": 1.0 }, { "source": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice_deleteasync", - "target": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_iuserrepository_remove", + "target": "src_anichron_core_data_iunitofwork_anichron_core_data_iunitofwork_executeintransactionasync", "relation": "calls", "_origin": "ast", "confidence": "INFERRED", "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L63", + "source_location": "L72", + "weight": 1.0 + }, + { + "source": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice_deleteasync", + "target": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_markallsessionsrevokedasync", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.8, + "context": "call", + "source_file": "src/Anichron.API/Services/AdminUserService.cs", + "source_location": "L74", "weight": 1.0 }, { @@ -214082,7 +214609,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L64", + "source_location": "L75", "weight": 1.0 }, { @@ -214121,6 +214648,18 @@ "source_location": "L32", "weight": 1.0 }, + { + "source": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice_updateasync", + "target": "src_anichron_core_data_iunitofwork_anichron_core_data_iunitofwork_executeintransactionasync", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.8, + "context": "call", + "source_file": "src/Anichron.API/Services/AdminUserService.cs", + "source_location": "L49", + "weight": 1.0 + }, { "source": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice_updateasync", "target": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_markallsessionsrevokedasync", @@ -214130,7 +214669,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L47", + "source_location": "L52", "weight": 1.0 }, { @@ -214142,7 +214681,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AdminUserService.cs", - "source_location": "L49", + "source_location": "L54", "weight": 1.0 }, { @@ -214154,7 +214693,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L208", + "source_location": "L214", "weight": 1.0 }, { @@ -214166,7 +214705,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L212", + "source_location": "L218", "weight": 1.0 }, { @@ -214178,7 +214717,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L215", + "source_location": "L221", "weight": 1.0 }, { @@ -214190,7 +214729,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L222", + "source_location": "L228", "weight": 1.0 }, { @@ -214202,7 +214741,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L225", + "source_location": "L231", "weight": 1.0 }, { @@ -214214,7 +214753,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L229", + "source_location": "L235", "weight": 1.0 }, { @@ -214226,7 +214765,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L233", + "source_location": "L239", "weight": 1.0 }, { @@ -214238,7 +214777,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L180", + "source_location": "L186", "weight": 1.0 }, { @@ -214250,7 +214789,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L181", + "source_location": "L187", "weight": 1.0 }, { @@ -214262,7 +214801,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L184", + "source_location": "L190", "weight": 1.0 }, { @@ -214274,7 +214813,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L188", + "source_location": "L194", "weight": 1.0 }, { @@ -214286,7 +214825,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L190", + "source_location": "L196", "weight": 1.0 }, { @@ -214298,7 +214837,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L193", + "source_location": "L199", "weight": 1.0 }, { @@ -214310,7 +214849,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L194", + "source_location": "L200", "weight": 1.0 }, { @@ -214322,7 +214861,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L131", + "source_location": "L129", "weight": 1.0 }, { @@ -214334,7 +214873,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L134", + "source_location": "L140", "weight": 1.0 }, { @@ -214346,7 +214885,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L140", + "source_location": "L146", "weight": 1.0 }, { @@ -214358,7 +214897,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L141", + "source_location": "L147", "weight": 1.0 }, { @@ -214370,7 +214909,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L158", + "source_location": "L164", "weight": 1.0 }, { @@ -214382,7 +214921,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L160", + "source_location": "L166", "weight": 1.0 }, { @@ -214394,7 +214933,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L162", + "source_location": "L168", "weight": 1.0 }, { @@ -214406,7 +214945,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L163", + "source_location": "L169", "weight": 1.0 }, { @@ -214418,24 +214957,24 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L170", + "source_location": "L176", "weight": 1.0 }, { "source": "src_anichron_api_services_authservice_anichron_api_services_authservice_registerasync", - "target": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_iuserrepository_add", + "target": "src_anichron_core_data_iunitofwork_anichron_core_data_iunitofwork_executeintransactionasync", "relation": "calls", "_origin": "ast", "confidence": "INFERRED", "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L100", + "source_location": "L104", "weight": 1.0 }, { "source": "src_anichron_api_services_authservice_anichron_api_services_authservice_registerasync", - "target": "src_anichron_core_data_iunitofwork_anichron_core_data_iunitofwork_executeintransactionasync", + "target": "src_anichron_core_data_iunitofwork_anichron_core_data_iunitofwork_savechangesasync", "relation": "calls", "_origin": "ast", "confidence": "INFERRED", @@ -214447,98 +214986,98 @@ }, { "source": "src_anichron_api_services_authservice_anichron_api_services_authservice_registerasync", - "target": "src_anichron_core_data_iunitofwork_anichron_core_data_iunitofwork_savechangesasync", + "target": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_issueasync", "relation": "calls", "_origin": "ast", "confidence": "INFERRED", "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L108", + "source_location": "L107", "weight": 1.0 }, { "source": "src_anichron_api_services_authservice_anichron_api_services_authservice_registerasync", - "target": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_issueasync", + "target": "src_anichron_core_data_repository_inviterepository_anichron_core_data_repository_iinviterepository_findvalidbyhashasync", "relation": "calls", "_origin": "ast", "confidence": "INFERRED", "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L109", + "source_location": "L73", "weight": 1.0 }, { "source": "src_anichron_api_services_authservice_anichron_api_services_authservice_registerasync", - "target": "src_anichron_core_data_repository_inviterepository_anichron_core_data_repository_iinviterepository_findvalidbyhashasync", + "target": "src_anichron_api_services_registrationvalidator_anichron_api_services_iregistrationvalidator_validateasync", "relation": "calls", "_origin": "ast", "confidence": "INFERRED", "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L75", + "source_location": "L80", "weight": 1.0 }, { "source": "src_anichron_api_services_authservice_anichron_api_services_authservice_registerasync", - "target": "src_anichron_api_services_registrationvalidator_anichron_api_services_iregistrationvalidator_validateasync", + "target": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_iuserrepository_anybyusernameasync", "relation": "calls", "_origin": "ast", "confidence": "INFERRED", "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L82", + "source_location": "L84", "weight": 1.0 }, { "source": "src_anichron_api_services_authservice_anichron_api_services_authservice_registerasync", - "target": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_iuserrepository_anybyusernameasync", + "target": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_iuserrepository_anybyemailasync", "relation": "calls", "_origin": "ast", "confidence": "INFERRED", "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L86", + "source_location": "L87", "weight": 1.0 }, { "source": "src_anichron_api_services_authservice_anichron_api_services_authservice_registerasync", - "target": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_iuserrepository_anybyemailasync", + "target": "src_anichron_core_guidfactory_anichron_core_iguidfactory_newguid", "relation": "calls", "_origin": "ast", "confidence": "INFERRED", "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L89", + "source_location": "L92", "weight": 1.0 }, { "source": "src_anichron_api_services_authservice_anichron_api_services_authservice_registerasync", - "target": "src_anichron_core_guidfactory_anichron_core_iguidfactory_newguid", + "target": "src_anichron_api_security_passwordhasher_anichron_api_security_ipasswordhasher_hash", "relation": "calls", "_origin": "ast", "confidence": "INFERRED", "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L94", + "source_location": "L95", "weight": 1.0 }, { "source": "src_anichron_api_services_authservice_anichron_api_services_authservice_registerasync", - "target": "src_anichron_api_security_passwordhasher_anichron_api_security_ipasswordhasher_hash", + "target": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_iuserrepository_add", "relation": "calls", "_origin": "ast", "confidence": "INFERRED", "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L97", + "source_location": "L98", "weight": 1.0 }, { @@ -214550,7 +215089,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L173", + "source_location": "L179", "weight": 1.0 }, { @@ -214946,7 +215485,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L69", + "source_location": "L70", "weight": 1.0 }, { @@ -214958,7 +215497,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L17", + "source_location": "L18", "weight": 1.0 }, { @@ -214970,7 +215509,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L27", + "source_location": "L28", "weight": 1.0 }, { @@ -214982,7 +215521,31 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L49", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_nullstoredhash_doesnotshortcircuit", + "target": "src_anichron_api_security_passwordhasher_anichron_api_security_argon2passwordhasher_verify", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.8, + "context": "call", + "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", + "source_location": "L124", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_nullstoredhash_returnsfalse", + "target": "src_anichron_api_security_passwordhasher_anichron_api_security_argon2passwordhasher_verify", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.8, + "context": "call", + "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", + "source_location": "L108", "weight": 1.0 }, { @@ -214994,7 +215557,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L80", + "source_location": "L81", "weight": 1.0 }, { @@ -215006,7 +215569,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L59", + "source_location": "L60", "weight": 1.0 }, { @@ -215018,7 +215581,7 @@ "confidence_score": 0.8, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L39", + "source_location": "L40", "weight": 1.0 }, { @@ -215045,18 +215608,6 @@ "source_location": "L47", "weight": 1.0 }, - { - "source": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_testfixture_withpasswordvalid", - "target": "src_anichron_api_security_passwordhasher_anichron_api_security_ipasswordhasher_verify", - "relation": "calls", - "_origin": "ast", - "confidence": "INFERRED", - "confidence_score": 0.8, - "context": "call", - "source_file": "src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs", - "source_location": "L61", - "weight": 1.0 - }, { "source": "src_anichron_api_tests_unit_services_authservicetests_anichron_api_tests_unit_services_testfixture_withpasswordvalidationerror", "target": "src_anichron_api_services_registrationvalidator_anichron_api_services_iregistrationvalidator_validatepasswordasync", @@ -216770,7 +217321,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L67", + "source_location": "L68", "weight": 1.0 }, { @@ -216782,7 +217333,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L15", + "source_location": "L16", "weight": 1.0 }, { @@ -216794,7 +217345,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L25", + "source_location": "L26", "weight": 1.0 }, { @@ -216806,7 +217357,31 @@ "confidence_score": 0.85, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L47", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_nullstoredhash_doesnotshortcircuit", + "target": "src_anichron_api_security_passwordhasher_anichron_api_security_argon2passwordhasher", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", + "source_location": "L121", + "weight": 1.0 + }, + { + "source": "src_anichron_api_tests_unit_security_passwordhashertests_anichron_api_tests_unit_security_passwordhashertests_verify_nullstoredhash_returnsfalse", + "target": "src_anichron_api_security_passwordhasher_anichron_api_security_argon2passwordhasher", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", + "source_location": "L106", "weight": 1.0 }, { @@ -216818,7 +217393,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L78", + "source_location": "L79", "weight": 1.0 }, { @@ -216830,7 +217405,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L57", + "source_location": "L58", "weight": 1.0 }, { @@ -216842,7 +217417,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs", - "source_location": "L37", + "source_location": "L38", "weight": 1.0 }, { @@ -219086,7 +219661,7 @@ "confidence_score": 0.9, "context": "call", "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L14", + "source_location": "L18", "weight": 1.0 }, { @@ -219098,7 +219673,7 @@ "confidence_score": 0.9, "context": "call", "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L14", + "source_location": "L18", "weight": 1.0 }, { @@ -220650,5 +221225,5 @@ "source_file": "CLAUDE.md" } ], - "built_at_commit": "3c0ca799a8d8a3056fdf9ca6a59646f18405755a" + "built_at_commit": "3d290f7ca4f97ed5631e7340cdc52efe702b9b8c" } \ No newline at end of file diff --git a/src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs b/src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs index eb485bd..b16a18a 100644 --- a/src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs +++ b/src/Anichron.API.Tests.Unit/Security/PasswordHasherTests.cs @@ -1,4 +1,5 @@ using Anichron.API.Security; +using System.Diagnostics; namespace Anichron.API.Tests.Unit.Security; @@ -81,4 +82,55 @@ public void Verify_TamperedStoredHash_ReturnsFalse() result.Should().BeFalse(); } + + // ========================================================================== + // Equal work for a user that does not exist — issue #173 + // + // A null storedHash means "no such account". Verifying it costs the same Argon2 pass as + // verifying a real one, so this method leaks nothing about account existence. + // + // ⚠️ That is a claim about the HASHER, not about login. AuthService.LoginAsync still writes + // a failed-attempt record for a known user and skips it for an unknown one, so end-to-end + // login timing remains distinguishable. Scoped deliberately — overstating it here is how the + // residual leak gets forgotten. + // + // The hasher owns the invariant because it owns the cost. It previously lived in an + // AuthService field initializer, which — AuthService being registered Scoped — spent 64 MiB + // and three Argon2 passes on *every request that resolved IAuthService*, including /refresh + // and /logout, which never read the value. + // ========================================================================== + + [Fact] + public void Verify_NullStoredHash_ReturnsFalse() + { + var testee = new Argon2PasswordHasher(); + + var result = testee.Verify("password", null); + + result.Should().BeFalse(); + } + + // ⚠️ Named for what it actually pins: that the null path is not a cheap early return. It + // does NOT pin "equal work" — it would still pass if the throwaway pass used weaker Argon2 + // parameters, or were replaced by a sleep. Pinning true equality needs a comparison against + // the real path, and that is the wall-clock-ratio shape that goes flaky on a loaded runner. + // The guard against weakened parameters is that both paths call the same RunArgon2idSecure. + [Fact] + public void Verify_NullStoredHash_DoesNotShortCircuit() + { + var testee = new Argon2PasswordHasher(); + + var stopwatch = Stopwatch.StartNew(); + testee.Verify("password", null); + stopwatch.Stop(); + + // ⭐ A LOWER bound, deliberately. "At least this slow" cannot fail on a loaded or slow + // machine — only on an impossibly fast one, and 64 MiB of Argon2id at three iterations + // does not complete in single-digit milliseconds on any hardware this runs on (measured + // ~30–80 ms locally). An upper bound, or a ratio against the real-hash path, is the + // shape that goes flaky on a busy CI runner. + stopwatch.ElapsedMilliseconds.Should().BeGreaterThan(10, + "a null hash must still cost an Argon2 pass; returning early would make " + + "verification time reveal that the account does not exist"); + } } diff --git a/src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs b/src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs index 0d14698..e3e89dc 100644 --- a/src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs +++ b/src/Anichron.API.Tests.Unit/Services/AdminUserServiceTests.cs @@ -2,6 +2,7 @@ using Anichron.Core.Data; using Anichron.Core.Data.Repository; using Anichron.Core.Domain; +using NSubstitute.ExceptionExtensions; namespace Anichron.API.Tests.Unit.Services; @@ -16,7 +17,44 @@ private sealed class TestFixture public ITokenService TokenService { get; } = Substitute.For(); private readonly IClock _clock = Substitute.For(); - public TestFixture() => _clock.GetCurrentInstant().Returns(FixedNow); + // Record whether each write ran *while the transaction lambda was executing*, not merely + // that a transaction was opened somewhere: `Received().ExecuteInTransactionAsync(...)` + // alone would also pass on code that opened a transaction and wrote outside it. + public bool RevokedInsideTransaction { get; private set; } + public bool SavedInsideTransaction { get; private set; } + private bool insideTransaction; + + public TestFixture() + { + _clock.GetCurrentInstant().Returns(FixedNow); + + // The non-generic Func overload — the one AdminUserService uses. NSubstitute + // stubs per overload, so stubbing Func> here would leave the lambda + // silently un-invoked. + UnitOfWork + .ExecuteInTransactionAsync(Arg.Any>(), Arg.Any()) + .Returns(async callInfo => + { + insideTransaction = true; + try + { + await callInfo.Arg>()(); + } + finally + { + insideTransaction = false; + } + }); + + TokenService + .When(t => t.MarkAllSessionsRevokedAsync( + Arg.Any(), Arg.Any(), Arg.Any())) + .Do(_ => RevokedInsideTransaction = insideTransaction); + + UnitOfWork + .When(u => u.SaveChangesAsync(Arg.Any())) + .Do(_ => SavedInsideTransaction = insideTransaction); + } public AdminUserService CreateTestee() => new(Users, UnitOfWork, _clock, TokenService); } @@ -82,6 +120,8 @@ public async Task UpdateAsync_BothParamsNull_ReturnsUserWithoutSaving() result.IsSuccess.Should().BeTrue(); result.Value.Should().BeSameAs(user); await fixture.UnitOfWork.DidNotReceive().SaveChangesAsync(Arg.Any()); + // Nothing is written, so opening a transaction would be cost without purpose. + await fixture.UnitOfWork.DidNotReceive().ExecuteInTransactionAsync(Arg.Any>(), Arg.Any()); } [Fact] @@ -109,6 +149,7 @@ public async Task UpdateAsync_UserNotFound_ReturnsUserNotFound() result.IsSuccess.Should().BeFalse(); result.Error.Should().Be(AuthError.UserNotFound); await fixture.UnitOfWork.DidNotReceive().SaveChangesAsync(Arg.Any()); + await fixture.UnitOfWork.DidNotReceive().ExecuteInTransactionAsync(Arg.Any>(), Arg.Any()); } [Fact] @@ -136,6 +177,11 @@ public async Task UpdateAsync_SetIsDisabledTrue_RevokesSessionsAndSaves() await fixture.TokenService.Received(1).MarkAllSessionsRevokedAsync(user.Id, FixedNow, Arg.Any()); await fixture.UnitOfWork.Received(1).SaveChangesAsync(Arg.Any()); + await fixture.UnitOfWork.Received(1).ExecuteInTransactionAsync(Arg.Any>(), Arg.Any()); + fixture.RevokedInsideTransaction.Should().BeTrue( + "revoking sessions outside the transaction cannot be rolled back when the save fails"); + fixture.SavedInsideTransaction.Should().BeTrue( + "the user mutation must commit atomically with the revocation"); } [Fact] @@ -195,6 +241,7 @@ public async Task DeleteAsync_UserNotFound_ReturnsUserNotFound() result.Error.Should().Be(AuthError.UserNotFound); fixture.Users.DidNotReceive().Remove(Arg.Any()); await fixture.UnitOfWork.DidNotReceive().SaveChangesAsync(Arg.Any()); + await fixture.UnitOfWork.DidNotReceive().ExecuteInTransactionAsync(Arg.Any>(), Arg.Any()); } [Fact] @@ -210,5 +257,40 @@ public async Task DeleteAsync_ValidUser_RevokesSessionsRemovesUserAndSaves() await fixture.TokenService.Received(1).MarkAllSessionsRevokedAsync(user.Id, FixedNow, Arg.Any()); fixture.Users.Received(1).Remove(user); await fixture.UnitOfWork.Received(1).SaveChangesAsync(Arg.Any()); + await fixture.UnitOfWork.Received(1).ExecuteInTransactionAsync(Arg.Any>(), Arg.Any()); + fixture.RevokedInsideTransaction.Should().BeTrue(); + fixture.SavedInsideTransaction.Should().BeTrue(); + } + + // ========================================================================== + // Transactional integrity — issue #172 + // + // Revoking sessions uses ExecuteUpdateAsync, which bypasses the change tracker and issues + // SQL immediately. Untransacted, a failing SaveChangesAsync therefore leaves the sessions + // revoked and the user mutation lost: an admin "disables" an account, the save fails, and + // the account is still enabled while its sessions are gone. + // ========================================================================== + + [Fact] + public async Task UpdateAsync_SaveThrows_TheRevocationRanInsideTheFailedTransaction() + { + var fixture = new TestFixture(); + var user = new User { Id = Guid.NewGuid(), IsDisabled = false, StorageConfigs = [] }; + fixture.Users.FindByIdWithConfigsAsync(user.Id, Arg.Any()).Returns(user); + fixture.UnitOfWork + .SaveChangesAsync(Arg.Any()) + .ThrowsAsync(new InvalidOperationException("constraint violation")); + + var act = async () => await fixture.CreateTestee() + .UpdateAsync(Guid.NewGuid(), user.Id, isAdmin: null, isDisabled: true, CancellationToken.None); + + // The throw propagating is not the interesting part — it did that before the fix too. + // What matters is that BOTH writes sat inside the transaction that failed, so the + // rollback covers them. + await act.Should().ThrowAsync(); + fixture.RevokedInsideTransaction.Should().BeTrue( + "otherwise the sessions stay revoked while the user mutation is lost — the #172 defect"); + fixture.SavedInsideTransaction.Should().BeTrue( + "the save that failed must itself have been inside the transaction"); } } diff --git a/src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs b/src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs index e0ce2c5..245d39d 100644 --- a/src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs +++ b/src/Anichron.API.Tests.Unit/Services/AuthServiceTests.cs @@ -18,7 +18,7 @@ private sealed class TestFixture private readonly IUnitOfWork _unitOfWork = Substitute.For(); private readonly IClock _clock = Substitute.For(); private readonly IGuidFactory _guidFactory = Substitute.For(); - private readonly IPasswordHasher _passwordHasher = Substitute.For(); + internal readonly IPasswordHasher PasswordHasher = Substitute.For(); private readonly IRegistrationValidator _validator = Substitute.For(); internal readonly ILockoutService Lockout = Substitute.For(); @@ -27,7 +27,7 @@ private sealed class TestFixture public TestFixture() { _guidFactory.NewGuid().Returns(Guid.Empty); - _passwordHasher.Hash(Arg.Any()).Returns("hashed_value"); + PasswordHasher.Hash(Arg.Any()).Returns("hashed_value"); _clock.GetCurrentInstant().Returns(Instant.FromUtc(2026, 1, 1, 12, 0, 0)); TokenService.IssueAsync(Arg.Any(), Arg.Any()) .Returns(new AuthTokens("access_token", "refresh_token")); @@ -58,7 +58,7 @@ public TestFixture WithValidInvite(Invite invite) public TestFixture WithPasswordValid() { - _passwordHasher.Verify(Arg.Any(), Arg.Any()).Returns(true); + PasswordHasher.Verify(Arg.Any(), Arg.Any()).Returns(true); return this; } @@ -148,7 +148,7 @@ public TestFixture WithUserFoundForCredential(string normalizedCredential, User } public AuthService CreateTestee() => new( - Users, _invites, _unitOfWork, _clock, _guidFactory, _passwordHasher, _validator, TokenService, Lockout); + Users, _invites, _unitOfWork, _clock, _guidFactory, PasswordHasher, _validator, TokenService, Lockout); } // ConstraintName has no setter in Npgsql 10 — must use the full constructor. @@ -465,6 +465,22 @@ public async Task LoginAsync_UnknownUser_ReturnsInvalidCredentials() }); } + // Issue #173: the equal-work guarantee now lives in the hasher, which spends a full Argon2 + // pass on a null hash. This pins the call site's half of that bargain — it must hand the + // hasher a null rather than short-circuiting, and must not resurrect a precomputed dummy + // hash (the old field initializer cost 64 MiB on *every* request that resolved IAuthService, + // including ones that never logged anyone in). + [Fact] + public async Task LoginAsync_UnknownUser_VerifiesAgainstANullHashExactlyOnce() + { + var fixture = new TestFixture(); + + await fixture.CreateTestee().LoginAsync("ghost", "password", CancellationToken.None); + + fixture.PasswordHasher.Received(1).Verify("password", null); + fixture.PasswordHasher.DidNotReceive().Hash(Arg.Any()); + } + [Fact] public async Task LoginAsync_WrongPassword_ReturnsInvalidCredentials() { diff --git a/src/Anichron.API/Security/PasswordHasher.cs b/src/Anichron.API/Security/PasswordHasher.cs index 4f664a1..fa8b197 100644 --- a/src/Anichron.API/Security/PasswordHasher.cs +++ b/src/Anichron.API/Security/PasswordHasher.cs @@ -8,7 +8,11 @@ namespace Anichron.API.Security; public interface IPasswordHasher { string Hash(string password); - bool Verify(string password, string storedHash); + + // storedHash is null when no such account exists. A null hash still costs a full Argon2 + // pass, so verification itself takes the same time either way. That removes the HASHING + // asymmetry only — it does not make a caller's whole code path constant-time. + bool Verify(string password, string? storedHash); } public sealed class Argon2PasswordHasher : IPasswordHasher @@ -24,8 +28,29 @@ public string Hash(string password) return Convert.ToBase64String(combined); } - public bool Verify(string password, string storedHash) + public bool Verify(string password, string? storedHash) { + // ⛔ Equal work, not an early return. Verifying a missing account must cost the same + // Argon2 pass as verifying a real one, so this method leaks nothing about account + // existence. ⚠️ Whether the CALLER leaks it is the caller's problem — AuthService.Login + // still does a database write for a known user that it skips for an unknown one. + // + // The invariant lives here because this class owns the cost. It used to live in an + // AuthService field initializer, which — AuthService being Scoped — burned 64 MiB and + // three Argon2 passes on every request that resolved IAuthService, including ones that + // never read the value. See #173. + // + // ⚠️ `return false` unconditionally, rather than comparing against random bytes: + // correctness must not rest on two random values differing. The FixedTimeEquals of the + // real path is deliberately not mirrored here — it is microseconds against ~100 ms of + // Argon2, so adding it back would buy nothing and reintroduce that dependency. + if (storedHash is null) + { + var throwawaySalt = RandomNumberGenerator.GetBytes(AppDefaults.Argon2.SaltLength); + CryptographicOperations.ZeroMemory(RunArgon2idSecure(password, throwawaySalt)); + return false; + } + var combined = Convert.FromBase64String(storedHash); var salt = combined[..AppDefaults.Argon2.SaltLength]; var expected = combined[AppDefaults.Argon2.SaltLength..]; diff --git a/src/Anichron.API/Services/AdminUserService.cs b/src/Anichron.API/Services/AdminUserService.cs index 0262ad7..7536b46 100644 --- a/src/Anichron.API/Services/AdminUserService.cs +++ b/src/Anichron.API/Services/AdminUserService.cs @@ -43,10 +43,17 @@ public async Task> UpdateAsync(Guid callerId, Guid targetId, bo if (isDisabled.HasValue) user.IsDisabled = isDisabled.Value; - if (shouldRevokeSessions) - await tokenService.MarkAllSessionsRevokedAsync(targetId, clock.GetCurrentInstant(), ct); + // Both writes, or neither: revocation goes through ExecuteUpdateAsync, which bypasses the + // change tracker and commits immediately, so untransacted a failing save would leave the + // sessions revoked and the user mutation lost. + await unitOfWork.ExecuteInTransactionAsync(async () => + { + if (shouldRevokeSessions) + await tokenService.MarkAllSessionsRevokedAsync(targetId, clock.GetCurrentInstant(), ct); + + await unitOfWork.SaveChangesAsync(ct); + }, ct); - await unitOfWork.SaveChangesAsync(ct); return AuthResult.Ok(user); } @@ -59,9 +66,15 @@ public async Task DeleteAsync(Guid callerId, Guid targetId, Cancella if (user is null) return AuthResult.Fail(AuthError.UserNotFound); - await tokenService.MarkAllSessionsRevokedAsync(targetId, clock.GetCurrentInstant(), ct); + // Same revoke-then-save pairing as UpdateAsync, transacted for the same reason — here the + // loss would be a user whose sessions are all revoked but whose row was never deleted. users.Remove(user); - await unitOfWork.SaveChangesAsync(ct); + await unitOfWork.ExecuteInTransactionAsync(async () => + { + await tokenService.MarkAllSessionsRevokedAsync(targetId, clock.GetCurrentInstant(), ct); + await unitOfWork.SaveChangesAsync(ct); + }, ct); + return AuthResult.Ok(); } } diff --git a/src/Anichron.API/Services/AuthService.cs b/src/Anichron.API/Services/AuthService.cs index 0ea668b..cb316ac 100644 --- a/src/Anichron.API/Services/AuthService.cs +++ b/src/Anichron.API/Services/AuthService.cs @@ -62,8 +62,6 @@ public sealed class AuthService( ILockoutService lockout) : IAuthService { - private readonly string dummyPasswordHash = passwordHasher.Hash(guidFactory.NewGuid().ToString()); - public async Task> RegisterAsync(string username, string email, string password, string inviteToken, CancellationToken ct) { ArgumentNullException.ThrowIfNull(username); @@ -130,8 +128,16 @@ public async Task> LoginAsync(string usernameOrEmail, str var normalized = usernameOrEmail.Trim().ToLowerInvariant(); var user = await users.FindByCredentialAsync(normalized, ct); - // Prevent timing attack: Use dummy hash for non-existing accounts - var passwordValid = passwordHasher.Verify(password, user?.PasswordHash ?? dummyPasswordHash); + // A null hash means "no such account", and the hasher spends a full Argon2 pass on it + // rather than short-circuiting. That removes the hashing asymmetry; this call site's only + // job is not to defeat it by branching before the call. + // + // ⚠️ It does NOT make login constant-time end to end, and this comment deliberately does + // not claim that. A known user with a wrong password goes on to + // RecordFailedAttemptAsync below, which is a database write an unknown user never makes — + // milliseconds, far more than the hashing difference this removes. Username enumeration + // by timing is therefore still possible. Tracked separately; see the note on that call. + var passwordValid = passwordHasher.Verify(password, user?.PasswordHash); var now = clock.GetCurrentInstant();