{ "generatedAt": "2026-05-25T11:41:02.824Z", "targetPath": "business/top-business-flows.md", "targetKind": "folder", "metadataDraft": { "sectionProvenance": [ { "sectionId": "dependency_map_graph", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ] }, { "sectionId": "startup_runtime_graph", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ] }, { "sectionId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ] }, { "sectionId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ] }, { "sectionId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ] }, { "sectionId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ] }, { "sectionId": "failure_flow_2_nexusreader_maui_mauiprogram_cs", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ] }, { "sectionId": "method_flows_graph", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ] } ], "claimGrounding": [], "nodeMetadata": [ { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "label": "MauiProgram", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "responsibility": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:1:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "label": "MauiProgram", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "responsibility": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:10:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 10, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "label": "MauiPlatformService", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:28:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 28, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "label": "MauiStorageService", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:29:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 29, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "label": "NexusAuthenticationStateProvider", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:32:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 32, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "label": "NexusAuthenticationStateProvider (resolved)", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:33:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 33, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "label": "AuthorizationCore", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:35:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 35, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "label": "HttpClient", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:38:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 38, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "label": "ThemeService", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:41:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 41, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "label": "FocusModeService", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:42:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 42, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "label": "QuizStateService", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:43:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 43, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "label": "ReaderNavigationService", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:44:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 44, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "label": "Program.cs", "diagramId": "dependency_map_graph", "nodeRole": "service", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstrap the WebAssembly client: configure DI for the WASM frontend, register platform/UI/identity/AI services, provide HttpClient, register application services, and register server-only throwing stubs so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client composition root: it wires client-specific implementations and intentionally registers throwing stubs for server-only services (DB, embedding generation, file storage, repository, real-time broadcasting) so that the client can still validate DI without enabling server features.", "technologyHints": [ "csharp", "Dependency Injection (DI) registration", "Environment-specific stubbing (throwing stubs for server-only services)", "Composition root / app bootstrap" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:1:1", "path": "NexusReader.Web.Client/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "label": "ThrowingDbContextFactory", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "IDbContextFactory implementation that prevents EF DbContext usage in the WASM client by throwing.", "responsibility": "IDbContextFactory implementation that prevents EF DbContext usage in the WASM client by throwing.", "technologyHints": [ "csharp", "Dependency Injection (DI) registration", "Environment-specific stubbing (throwing stubs for server-only services)", "Composition root / app bootstrap" ], "detailItems": [ { "label": "Signature", "value": "() -> AppDbContext" }, { "label": "Calls", "value": "0" }, { "label": "Action:throw", "value": "Throws exception @L63" }, { "label": "Action:throw", "value": "Throws NotSupportedException to block DbContext usage in WASM @L63" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:61:1", "path": "NexusReader.Web.Client/Program.cs", "line": 61, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 61, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "label": "ThrowingEmbeddingGenerator", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "IEmbeddingGenerator stub that throws on GenerateAsync to prevent embedding generation in WASM.", "responsibility": "IEmbeddingGenerator stub that throws on GenerateAsync to prevent embedding generation in WASM.", "technologyHints": [ "csharp", "Dependency Injection (DI) registration", "Environment-specific stubbing (throwing stubs for server-only services)", "Composition root / app bootstrap" ], "detailItems": [ { "label": "Signature", "value": "() -> void" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "No-op dispose @L68" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:66:1", "path": "NexusReader.Web.Client/Program.cs", "line": 66, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 66, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "label": "ThrowingBookStorageService", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "IBookStorageService stub that throws for all file storage operations in the WASM client.", "responsibility": "IBookStorageService stub that throws for all file storage operations in the WASM client.", "technologyHints": [ "csharp", "Dependency Injection (DI) registration", "Environment-specific stubbing (throwing stubs for server-only services)", "Composition root / app bootstrap" ], "detailItems": [ { "label": "Signature", "value": "(data: byte[], fileName: string) -> Task" }, { "label": "Calls", "value": "0" }, { "label": "Action:throw", "value": "Throws exception @L78" }, { "label": "Action:throw", "value": "Throws NotSupportedException @L78" }, { "label": "Action:throw", "value": "Throws exception @L79" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "1" }, { "label": "ErrorMessage", "value": "string required" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:74:1", "path": "NexusReader.Web.Client/Program.cs", "line": 74, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "label": "ThrowingEbookRepository", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "IEbookRepository stub that throws for all repository operations to force use of server API.", "responsibility": "IEbookRepository stub that throws for all repository operations to force use of server API.", "technologyHints": [ "csharp", "Dependency Injection (DI) registration", "Environment-specific stubbing (throwing stubs for server-only services)", "Composition root / app bootstrap" ], "detailItems": [ { "label": "Signature", "value": "(name: string, cancellationToken: CancellationToken) -> Task" }, { "label": "Calls", "value": "0" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L88" }, { "label": "Action:throw", "value": "Throws exception @L88" }, { "label": "Action:throw", "value": "Throws NotSupportedException @L88" }, { "label": "Action:throw", "value": "Throws exception @L89" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "1" }, { "label": "ErrorMessage", "value": "string required" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:84:1", "path": "NexusReader.Web.Client/Program.cs", "line": 84, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "label": "ThrowingSyncBroadcaster", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "ISyncBroadcaster stub that throws for real-time broadcasting operations in the WASM client.", "responsibility": "ISyncBroadcaster stub that throws for real-time broadcasting operations in the WASM client.", "technologyHints": [ "csharp", "Dependency Injection (DI) registration", "Environment-specific stubbing (throwing stubs for server-only services)", "Composition root / app bootstrap" ], "detailItems": [ { "label": "Signature", "value": "(userId: string, pageId: string, timestamp: DateTime, excludedConnectionId: string?, cancellationToken: CancellationToken) -> Task" }, { "label": "Calls", "value": "0" }, { "label": "Action:throw", "value": "Throws NotSupportedException @L96" }, { "label": "Action:throw", "value": "Throws exception @L97" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:94:1", "path": "NexusReader.Web.Client/Program.cs", "line": 94, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 94, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "label": "WebPlatformService", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstrap the WebAssembly client: configure DI for the WASM frontend, register platform/UI/identity/AI services, provide HttpClient, register application services, and register server-only throwing stubs so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client composition root: it wires client-specific implementations and intentionally registers throwing stubs for server-only services (DB, embedding generation, file storage, repository, real-time broadcasting) so that the client can still validate DI without enabling server features.", "technologyHints": [ "csharp", "Dependency Injection (DI) registration", "Environment-specific stubbing (throwing stubs for server-only services)", "Composition root / app bootstrap" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:18:1", "path": "NexusReader.Web.Client/Program.cs", "line": 18, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_webstorageservice_19", "label": "WebStorageService", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstrap the WebAssembly client: configure DI for the WASM frontend, register platform/UI/identity/AI services, provide HttpClient, register application services, and register server-only throwing stubs so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client composition root: it wires client-specific implementations and intentionally registers throwing stubs for server-only services (DB, embedding generation, file storage, repository, real-time broadcasting) so that the client can still validate DI without enabling server features.", "technologyHints": [ "csharp", "Dependency Injection (DI) registration", "Environment-specific stubbing (throwing stubs for server-only services)", "Composition root / app bootstrap" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:19:1", "path": "NexusReader.Web.Client/Program.cs", "line": 19, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 19, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "label": "MauiProgram", "diagramId": "startup_runtime_graph", "nodeRole": "class", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "responsibility": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:1:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "label": "CreateMauiApp", "diagramId": "startup_runtime_graph", "nodeRole": "method", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Create and configure the MAUI app builder, register application and platform services, configure debugging tools in DEBUG, and build/return the app; catches startup exceptions and rethrows after logging.", "responsibility": "Create and configure the MAUI app builder, register application and platform services, configure debugging tools in DEBUG, and build/return the app; catches startup exceptions and rethrows after logging.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Signature", "value": "() -> MauiApp" }, { "label": "Calls", "value": "2" }, { "label": "Action:try", "value": "Begins protected execution @L14" }, { "label": "Action:mapping", "value": "Catch startup exceptions, log to Debug and rethrow @L14" }, { "label": "Action:mapping", "value": "Create builder @L16" }, { "label": "Action:mapping", "value": "DEBUG-only tooling and logging @L22" }, { "label": "Action:mapping", "value": "Register platform and infrastructure singletons @L28" }, { "label": "Action:mapping", "value": "Register scoped identity services and auth provider @L32" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:12:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 12, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "label": "MauiPlatformService", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:28:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 28, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "label": "MauiStorageService", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:29:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 29, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "label": "NexusAuthenticationStateProvider", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:32:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 32, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "label": "NexusAuthenticationStateProvider (resolved)", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:33:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 33, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "label": "AuthorizationCore", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:35:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 35, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "label": "HttpClient", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:38:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 38, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "label": "ThemeService", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:41:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 41, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "label": "FocusModeService", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:42:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 42, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "label": "QuizStateService", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:43:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 43, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "label": "ReaderNavigationService", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:44:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 44, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "label": "Program.cs", "diagramId": "startup_runtime_graph", "nodeRole": "service", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstrap the WebAssembly client: configure DI for the WASM frontend, register platform/UI/identity/AI services, provide HttpClient, register application services, and register server-only throwing stubs so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client composition root: it wires client-specific implementations and intentionally registers throwing stubs for server-only services (DB, embedding generation, file storage, repository, real-time broadcasting) so that the client can still validate DI without enabling server features.", "technologyHints": [ "csharp", "Dependency Injection (DI) registration", "Environment-specific stubbing (throwing stubs for server-only services)", "Composition root / app bootstrap" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:1:1", "path": "NexusReader.Web.Client/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "label": "WebPlatformService", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstrap the WebAssembly client: configure DI for the WASM frontend, register platform/UI/identity/AI services, provide HttpClient, register application services, and register server-only throwing stubs so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client composition root: it wires client-specific implementations and intentionally registers throwing stubs for server-only services (DB, embedding generation, file storage, repository, real-time broadcasting) so that the client can still validate DI without enabling server features.", "technologyHints": [ "csharp", "Dependency Injection (DI) registration", "Environment-specific stubbing (throwing stubs for server-only services)", "Composition root / app bootstrap" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:18:1", "path": "NexusReader.Web.Client/Program.cs", "line": 18, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_webstorageservice_19", "label": "WebStorageService", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstrap the WebAssembly client: configure DI for the WASM frontend, register platform/UI/identity/AI services, provide HttpClient, register application services, and register server-only throwing stubs so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client composition root: it wires client-specific implementations and intentionally registers throwing stubs for server-only services (DB, embedding generation, file storage, repository, real-time broadcasting) so that the client can still validate DI without enabling server features.", "technologyHints": [ "csharp", "Dependency Injection (DI) registration", "Environment-specific stubbing (throwing stubs for server-only services)", "Composition root / app bootstrap" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:19:1", "path": "NexusReader.Web.Client/Program.cs", "line": 19, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 19, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_identityservice_32", "label": "IdentityService", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstrap the WebAssembly client: configure DI for the WASM frontend, register platform/UI/identity/AI services, provide HttpClient, register application services, and register server-only throwing stubs so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client composition root: it wires client-specific implementations and intentionally registers throwing stubs for server-only services (DB, embedding generation, file storage, repository, real-time broadcasting) so that the client can still validate DI without enabling server features.", "technologyHints": [ "csharp", "Dependency Injection (DI) registration", "Environment-specific stubbing (throwing stubs for server-only services)", "Composition root / app bootstrap" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:32:1", "path": "NexusReader.Web.Client/Program.cs", "line": 32, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 32, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusreader_web_client_handlers_authenticationheaderhandler_40", "label": "NexusReader.Web.Client.Handlers.AuthenticationHeaderHandler", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstrap the WebAssembly client: configure DI for the WASM frontend, register platform/UI/identity/AI services, provide HttpClient, register application services, and register server-only throwing stubs so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client composition root: it wires client-specific implementations and intentionally registers throwing stubs for server-only services (DB, embedding generation, file storage, repository, real-time broadcasting) so that the client can still validate DI without enabling server features.", "technologyHints": [ "csharp", "Dependency Injection (DI) registration", "Environment-specific stubbing (throwing stubs for server-only services)", "Composition root / app bootstrap" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:40:1", "path": "NexusReader.Web.Client/Program.cs", "line": 40, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 40, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "label": "MauiProgram", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "class", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "responsibility": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:1:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "label": "CreateMauiApp", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "method", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Create and configure the MAUI app builder, register application and platform services, configure debugging tools in DEBUG, and build/return the app; catches startup exceptions and rethrows after logging.", "responsibility": "Create and configure the MAUI app builder, register application and platform services, configure debugging tools in DEBUG, and build/return the app; catches startup exceptions and rethrows after logging.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Signature", "value": "() -> MauiApp" }, { "label": "Calls", "value": "2" }, { "label": "Action:try", "value": "Begins protected execution @L14" }, { "label": "Action:mapping", "value": "Catch startup exceptions, log to Debug and rethrow @L14" }, { "label": "Action:mapping", "value": "Create builder @L16" }, { "label": "Action:mapping", "value": "DEBUG-only tooling and logging @L22" }, { "label": "Action:mapping", "value": "Register platform and infrastructure singletons @L28" }, { "label": "Action:mapping", "value": "Register scoped identity services and auth provider @L32" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:12:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 12, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "label": "Begins protected execution", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "try", "responsibility": "try", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "try" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:14:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 14, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 14, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "label": "Build and return app", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "return", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "return builder.Build()", "responsibility": "return builder.Build()", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "return" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:57:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 57, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "sourceTargetKind": "return", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "label": "Handles exception path", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "catch (Exception ex)", "responsibility": "catch (Exception ex)", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "catch" }, { "label": "Condition", "value": "Exception ex" }, { "label": "Outcomes", "value": "handled exception" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:59:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 59, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 59, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "label": "Throws exception", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "throw;", "responsibility": "throw;", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "throw" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:63:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 63, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 63, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "label": "MauiProgram", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "class", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "responsibility": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:10:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 10, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "label": "MauiPlatformService", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:28:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 28, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "label": "MauiStorageService", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:29:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 29, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "label": "NexusAuthenticationStateProvider", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:32:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 32, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "label": "NexusAuthenticationStateProvider (resolved)", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:33:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 33, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "label": "AuthorizationCore", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:35:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 35, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "label": "HttpClient", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:38:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 38, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "label": "ThemeService", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:41:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 41, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "label": "FocusModeService", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:42:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 42, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "label": "QuizStateService", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:43:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 43, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "label": "ReaderNavigationService", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:44:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 44, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "label": "Program.cs", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "service", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstrap and run the NexusReader web application: configure services, authentication/authorization, middleware, database migration/seeding with retries, and declare Minimal API endpoints (knowledge, library, identity, billing/webhooks).", "responsibility": "Critical startup validates infrastructure registration, performs DB migrations with retry/backoff and seeding, exposes knowledge endpoints guarded by token policy, handles Stripe webhook subscription lifecycle updating user records, and provisions Google external logins with new user creation and logging.", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:1:1", "path": "NexusReader.Web/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_method_nexusreader_web_program_cs_program_top_level_29", "label": "Program (top-level)", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "method", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Configure DI, middleware, authentication/authorization, register endpoints and run the web host.", "responsibility": "Configure DI, middleware, authentication/authorization, register endpoints and run the web host.", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Signature", "value": "() -> Task (top-level Program)" }, { "label": "Calls", "value": "6" }, { "label": "Action:mapping", "value": "Add Razor/Blazor and server/client services @L34" }, { "label": "Action:mapping", "value": "Register scoped app services @L47" }, { "label": "Action:mapping", "value": "Configure named HttpClient 'NexusAPI' with fallback @L58" }, { "label": "Action:branch", "value": "Evaluates branch condition @L62" }, { "label": "Action:fallback", "value": "Falls back to alternate path @L66" }, { "label": "Action:mapping", "value": "Configure authentication and Google external login @L96" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:29:1", "path": "NexusReader.Web/Program.cs", "line": 29, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 29, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "label": "Evaluates branch condition", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "responsibility": "if (!string.IsNullOrEmpty(apiBaseUrl))", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "branch" }, { "label": "Condition", "value": "!string.IsNullOrEmpty(apiBaseUrl)" }, { "label": "Outcomes", "value": "true, false" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:62:1", "path": "NexusReader.Web/Program.cs", "line": 62, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "label": "Falls back to alternate path", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "else", "responsibility": "else", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "fallback" }, { "label": "Outcomes", "value": "fallback" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:66:1", "path": "NexusReader.Web/Program.cs", "line": 66, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "label": "Reads repository or persistence state", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "responsibility": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "repository-read" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:125:1", "path": "NexusReader.Web/Program.cs", "line": 125, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 125, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "label": "Reads repository or persistence state", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "context.Request.Path.StartsWithSegments(\"/identity\") ||", "responsibility": "context.Request.Path.StartsWithSegments(\"/identity\") ||", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "repository-read" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:126:1", "path": "NexusReader.Web/Program.cs", "line": 126, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 126, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "label": "Reads repository or persistence state", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "context.Request.Headers[\"Accept\"].ToString().Contains(\"application/json\");", "responsibility": "context.Request.Headers[\"Accept\"].ToString().Contains(\"application/json\");", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "repository-read" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:127:1", "path": "NexusReader.Web/Program.cs", "line": 127, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 127, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "label": "MauiProgram", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "class", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "responsibility": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:1:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "label": "CreateMauiApp", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "method", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Create and configure the MAUI app builder, register application and platform services, configure debugging tools in DEBUG, and build/return the app; catches startup exceptions and rethrows after logging.", "responsibility": "Create and configure the MAUI app builder, register application and platform services, configure debugging tools in DEBUG, and build/return the app; catches startup exceptions and rethrows after logging.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Signature", "value": "() -> MauiApp" }, { "label": "Calls", "value": "2" }, { "label": "Action:try", "value": "Begins protected execution @L14" }, { "label": "Action:mapping", "value": "Catch startup exceptions, log to Debug and rethrow @L14" }, { "label": "Action:mapping", "value": "Create builder @L16" }, { "label": "Action:mapping", "value": "DEBUG-only tooling and logging @L22" }, { "label": "Action:mapping", "value": "Register platform and infrastructure singletons @L28" }, { "label": "Action:mapping", "value": "Register scoped identity services and auth provider @L32" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:12:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 12, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "label": "Begins protected execution", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "try", "responsibility": "try", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "try" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:14:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 14, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 14, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "label": "Build and return app", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "return", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "return builder.Build()", "responsibility": "return builder.Build()", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "return" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:57:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 57, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "sourceTargetKind": "return", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "label": "Handles exception path", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "catch (Exception ex)", "responsibility": "catch (Exception ex)", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "catch" }, { "label": "Condition", "value": "Exception ex" }, { "label": "Outcomes", "value": "handled exception" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:59:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 59, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 59, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "label": "Throws exception", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "throw;", "responsibility": "throw;", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "throw" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:63:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 63, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 63, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "label": "Program.cs", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "service", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Bootstrap and run the NexusReader web application: configure services, authentication/authorization, middleware, database migration/seeding with retries, and declare Minimal API endpoints (knowledge, library, identity, billing/webhooks).", "responsibility": "Critical startup validates infrastructure registration, performs DB migrations with retry/backoff and seeding, exposes knowledge endpoints guarded by token policy, handles Stripe webhook subscription lifecycle updating user records, and provisions Google external logins with new user creation and logging.", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:1:1", "path": "NexusReader.Web/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_method_nexusreader_web_program_cs_program_top_level_29", "label": "Program (top-level)", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "method", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Configure DI, middleware, authentication/authorization, register endpoints and run the web host.", "responsibility": "Configure DI, middleware, authentication/authorization, register endpoints and run the web host.", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Signature", "value": "() -> Task (top-level Program)" }, { "label": "Calls", "value": "6" }, { "label": "Action:mapping", "value": "Add Razor/Blazor and server/client services @L34" }, { "label": "Action:mapping", "value": "Register scoped app services @L47" }, { "label": "Action:mapping", "value": "Configure named HttpClient 'NexusAPI' with fallback @L58" }, { "label": "Action:branch", "value": "Evaluates branch condition @L62" }, { "label": "Action:fallback", "value": "Falls back to alternate path @L66" }, { "label": "Action:mapping", "value": "Configure authentication and Google external login @L96" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:29:1", "path": "NexusReader.Web/Program.cs", "line": 29, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 29, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "label": "Evaluates branch condition", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "responsibility": "if (!string.IsNullOrEmpty(apiBaseUrl))", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "branch" }, { "label": "Condition", "value": "!string.IsNullOrEmpty(apiBaseUrl)" }, { "label": "Outcomes", "value": "true, false" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:62:1", "path": "NexusReader.Web/Program.cs", "line": 62, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "label": "Falls back to alternate path", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "else", "responsibility": "else", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "fallback" }, { "label": "Outcomes", "value": "fallback" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:66:1", "path": "NexusReader.Web/Program.cs", "line": 66, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "label": "Reads repository or persistence state", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "responsibility": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "repository-read" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:125:1", "path": "NexusReader.Web/Program.cs", "line": 125, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 125, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "label": "Reads repository or persistence state", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "context.Request.Path.StartsWithSegments(\"/identity\") ||", "responsibility": "context.Request.Path.StartsWithSegments(\"/identity\") ||", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "repository-read" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:126:1", "path": "NexusReader.Web/Program.cs", "line": 126, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 126, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "label": "Reads repository or persistence state", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "context.Request.Headers[\"Accept\"].ToString().Contains(\"application/json\");", "responsibility": "context.Request.Headers[\"Accept\"].ToString().Contains(\"application/json\");", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "repository-read" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:127:1", "path": "NexusReader.Web/Program.cs", "line": 127, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 127, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "label": "Evaluates branch condition", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "if (isApiRequest)", "responsibility": "if (isApiRequest)", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "branch" }, { "label": "Condition", "value": "isApiRequest" }, { "label": "Outcomes", "value": "true, false" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:129:1", "path": "NexusReader.Web/Program.cs", "line": 129, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 129, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "label": "MauiProgram", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "class", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "responsibility": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:1:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "label": "MauiProgram", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "class", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "responsibility": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:10:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 10, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "label": "MauiPlatformService", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:28:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 28, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "label": "MauiStorageService", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:29:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 29, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "label": "NexusAuthenticationStateProvider", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:32:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 32, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "label": "NexusAuthenticationStateProvider (resolved)", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:33:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 33, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "label": "AuthorizationCore", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:35:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 35, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "label": "HttpClient", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:38:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 38, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "label": "ThemeService", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:41:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 41, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "label": "FocusModeService", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:42:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 42, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "label": "QuizStateService", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:43:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 43, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "label": "ReaderNavigationService", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:44:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 44, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "label": "Program.cs", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "service", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstrap and run the NexusReader web application: configure services, authentication/authorization, middleware, database migration/seeding with retries, and declare Minimal API endpoints (knowledge, library, identity, billing/webhooks).", "responsibility": "Critical startup validates infrastructure registration, performs DB migrations with retry/backoff and seeding, exposes knowledge endpoints guarded by token policy, handles Stripe webhook subscription lifecycle updating user records, and provisions Google external logins with new user creation and logging.", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:1:1", "path": "NexusReader.Web/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_type_nexusreader_web_program_cs_knowledgerequest_566", "label": "KnowledgeRequest", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dto", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "DTO for knowledge-related API calls containing input text and optional ebook id.", "responsibility": "DTO for knowledge-related API calls containing input text and optional ebook id.", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Shape", "value": "dto" }, { "label": "Fields", "value": "2" }, { "label": "Text", "value": "string required" }, { "label": "EbookId", "value": "Guid?" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:566:1", "path": "NexusReader.Web/Program.cs", "line": 566, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 566, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_type_nexusreader_web_program_cs_groundednessrequest_567", "label": "GroundednessRequest", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dto", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "DTO for verifying groundedness of an answer against context.", "responsibility": "DTO for verifying groundedness of an answer against context.", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Shape", "value": "dto" }, { "label": "Fields", "value": "2" }, { "label": "Answer", "value": "string required" }, { "label": "Context", "value": "string required" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:567:1", "path": "NexusReader.Web/Program.cs", "line": 567, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 567, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_type_nexusreader_web_program_cs_semanticsearchrequest_568", "label": "SemanticSearchRequest", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dto", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "DTO for semantic search requests.", "responsibility": "DTO for semantic search requests.", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Shape", "value": "dto" }, { "label": "Fields", "value": "2" }, { "label": "QueryText", "value": "string required" }, { "label": "Limit", "value": "int" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:568:1", "path": "NexusReader.Web/Program.cs", "line": 568, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 568, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_type_nexusreader_web_program_cs_askquestionrequest_569", "label": "AskQuestionRequest", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dto", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "DTO for asking a question against knowledge with optional ebook scope and limit.", "responsibility": "DTO for asking a question against knowledge with optional ebook scope and limit.", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Shape", "value": "dto" }, { "label": "Fields", "value": "3" }, { "label": "Question", "value": "string required" }, { "label": "EbookId", "value": "Guid?" }, { "label": "Limit", "value": "int" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:569:1", "path": "NexusReader.Web/Program.cs", "line": 569, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 569, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "label": "MauiProgram", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "responsibility": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:1:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "label": "Begins protected execution", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "try", "responsibility": "try", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "try" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:14:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 14, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 14, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "label": "Build and return app", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "return", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "return builder.Build()", "responsibility": "return builder.Build()", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "return" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:57:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 57, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "sourceTargetKind": "return", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "label": "Handles exception path", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "catch (Exception ex)", "responsibility": "catch (Exception ex)", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "catch" }, { "label": "Condition", "value": "Exception ex" }, { "label": "Outcomes", "value": "handled exception" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:59:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 59, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 59, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "label": "Throws exception", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "throw;", "responsibility": "throw;", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "throw" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:63:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 63, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 63, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "label": "MauiProgram", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "responsibility": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:10:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 10, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "label": "MauiPlatformService", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:28:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 28, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "label": "MauiStorageService", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:29:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 29, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "label": "NexusAuthenticationStateProvider", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:32:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 32, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "label": "NexusAuthenticationStateProvider (resolved)", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:33:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 33, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "label": "AuthorizationCore", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:35:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 35, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "label": "HttpClient", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:38:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 38, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "label": "ThemeService", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:41:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 41, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "label": "FocusModeService", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:42:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 42, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "label": "QuizStateService", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:43:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 43, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "label": "ReaderNavigationService", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps and configures the MAUI application: creates the MAUI host builder, registers DI services (UI, platform, identity, app services), configures MediatR and returns the built MauiApp.", "responsibility": "CreateMauiApp centralizes MAUI DI registration; DEBUG region enables Blazor dev tools and debug logging; HttpClient points to emulator-hosted API at http://10.0.2.2:5000; AddApplication and MediatR registration wire application-layer handlers into the app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:44:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 44, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "label": "Program.cs", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "service", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstrap and run the NexusReader web application: configure services, authentication/authorization, middleware, database migration/seeding with retries, and declare Minimal API endpoints (knowledge, library, identity, billing/webhooks).", "responsibility": "Critical startup validates infrastructure registration, performs DB migrations with retry/backoff and seeding, exposes knowledge endpoints guarded by token policy, handles Stripe webhook subscription lifecycle updating user records, and provisions Google external logins with new user creation and logging.", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:1:1", "path": "NexusReader.Web/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "label": "Evaluates branch condition", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "responsibility": "if (!string.IsNullOrEmpty(apiBaseUrl))", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "branch" }, { "label": "Condition", "value": "!string.IsNullOrEmpty(apiBaseUrl)" }, { "label": "Outcomes", "value": "true, false" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:62:1", "path": "NexusReader.Web/Program.cs", "line": 62, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "label": "Begins protected execution", "diagramId": "failure_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "try", "responsibility": "try", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "try" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:14:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 14, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 14, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "label": "Build and return app", "diagramId": "failure_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "return", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "return builder.Build()", "responsibility": "return builder.Build()", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "return" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:57:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 57, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "sourceTargetKind": "return", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_method_nexusreader_web_program_cs_program_top_level_29", "label": "Program (top-level)", "diagramId": "failure_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "method", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Configure DI, middleware, authentication/authorization, register endpoints and run the web host.", "responsibility": "Configure DI, middleware, authentication/authorization, register endpoints and run the web host.", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Signature", "value": "() -> Task (top-level Program)" }, { "label": "Calls", "value": "6" }, { "label": "Action:mapping", "value": "Add Razor/Blazor and server/client services @L34" }, { "label": "Action:mapping", "value": "Register scoped app services @L47" }, { "label": "Action:mapping", "value": "Configure named HttpClient 'NexusAPI' with fallback @L58" }, { "label": "Action:branch", "value": "Evaluates branch condition @L62" }, { "label": "Action:fallback", "value": "Falls back to alternate path @L66" }, { "label": "Action:mapping", "value": "Configure authentication and Google external login @L96" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:29:1", "path": "NexusReader.Web/Program.cs", "line": 29, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 29, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "label": "Evaluates branch condition", "diagramId": "failure_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "responsibility": "if (!string.IsNullOrEmpty(apiBaseUrl))", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "branch" }, { "label": "Condition", "value": "!string.IsNullOrEmpty(apiBaseUrl)" }, { "label": "Outcomes", "value": "true, false" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:62:1", "path": "NexusReader.Web/Program.cs", "line": 62, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "label": "Falls back to alternate path", "diagramId": "failure_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "else", "responsibility": "else", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "fallback" }, { "label": "Outcomes", "value": "fallback" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:66:1", "path": "NexusReader.Web/Program.cs", "line": 66, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "label": "Reads repository or persistence state", "diagramId": "failure_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "context.Request.Headers[\"Accept\"].ToString().Contains(\"application/json\");", "responsibility": "context.Request.Headers[\"Accept\"].ToString().Contains(\"application/json\");", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "repository-read" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:127:1", "path": "NexusReader.Web/Program.cs", "line": 127, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 127, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "label": "Evaluates branch condition", "diagramId": "failure_flow_2_nexusreader_maui_mauiprogram_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "if (isApiRequest)", "responsibility": "if (isApiRequest)", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "branch" }, { "label": "Condition", "value": "isApiRequest" }, { "label": "Outcomes", "value": "true, false" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:129:1", "path": "NexusReader.Web/Program.cs", "line": 129, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 129, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "label": "MauiProgram", "diagramId": "method_flows_graph", "nodeRole": "class", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "responsibility": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:1:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "label": "CreateMauiApp", "diagramId": "method_flows_graph", "nodeRole": "method", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Create and configure the MAUI app builder, register application and platform services, configure debugging tools in DEBUG, and build/return the app; catches startup exceptions and rethrows after logging.", "responsibility": "Create and configure the MAUI app builder, register application and platform services, configure debugging tools in DEBUG, and build/return the app; catches startup exceptions and rethrows after logging.", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Signature", "value": "() -> MauiApp" }, { "label": "Calls", "value": "2" }, { "label": "Action:try", "value": "Begins protected execution @L14" }, { "label": "Action:mapping", "value": "Catch startup exceptions, log to Debug and rethrow @L14" }, { "label": "Action:mapping", "value": "Create builder @L16" }, { "label": "Action:mapping", "value": "DEBUG-only tooling and logging @L22" }, { "label": "Action:mapping", "value": "Register platform and infrastructure singletons @L28" }, { "label": "Action:mapping", "value": "Register scoped identity services and auth provider @L32" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:12:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 12, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "label": "Begins protected execution", "diagramId": "method_flows_graph", "nodeRole": "step", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "try", "responsibility": "try", "technologyHints": [ "csharp", "Service Registration", "Dependency Injection", "Application Bootstrap" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Action", "value": "try" }, { "label": "Domain", "value": "Identity, Sync, Theme" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:14:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 14, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 14, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "label": "Program.cs", "diagramId": "method_flows_graph", "nodeRole": "service", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Bootstrap and run the NexusReader web application: configure services, authentication/authorization, middleware, database migration/seeding with retries, and declare Minimal API endpoints (knowledge, library, identity, billing/webhooks).", "responsibility": "Critical startup validates infrastructure registration, performs DB migrations with retry/backoff and seeding, exposes knowledge endpoints guarded by token policy, handles Stripe webhook subscription lifecycle updating user records, and provisions Google external logins with new user creation and logging.", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:1:1", "path": "NexusReader.Web/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250", "label": "GetEpubContent (GET /api/epub/{ebookId}/{index})", "diagramId": "method_flows_graph", "nodeRole": "method", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Return EPUB page content for an ebook index for the current user.", "responsibility": "Return EPUB page content for an ebook index for the current user.", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Signature", "value": "(ebookId: Guid, index: int, IEpubReader epubService, ClaimsPrincipal user) -> IResult" }, { "label": "Calls", "value": "1" }, { "label": "Action:mapping", "value": "Maps data or transforms shape @L250" }, { "label": "Action:guard-clause", "value": "Extract userId @L252" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L252" }, { "label": "Action:external-call", "value": "Fetch content from epubService @L253" }, { "label": "Action:await", "value": "Waits for async work @L253" }, { "label": "Action:guard-clause", "value": "Guards early exit or rejection path @L255" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:250:1", "path": "NexusReader.Web/Program.cs", "line": 250, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 250, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_252_252", "label": "Extract userId", "diagramId": "method_flows_graph", "nodeRole": "step", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "var userId = user.FindFirstValue(ClaimTypes.NameIdentifier)", "responsibility": "var userId = user.FindFirstValue(ClaimTypes.NameIdentifier)", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "guard-clause" }, { "label": "Condition", "value": "user may be unauthenticated" }, { "label": "Outcomes", "value": "continue" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:252:1", "path": "NexusReader.Web/Program.cs", "line": 252, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 252, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355", "label": "GetMyEbooks (GET /api/library/books)", "diagramId": "method_flows_graph", "nodeRole": "method", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Return list of ebooks for the authenticated user via a GetMyEbooksQuery.", "responsibility": "Return list of ebooks for the authenticated user via a GetMyEbooksQuery.", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Signature", "value": "(ClaimsPrincipal user, IMediator mediator) -> IResult" }, { "label": "Calls", "value": "2" }, { "label": "Action:mapping", "value": "Maps data or transforms shape @L355" }, { "label": "Action:guard-clause", "value": "Ensure authenticated user @L357" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L357" }, { "label": "Action:guard-clause", "value": "Guards early exit or rejection path @L358" }, { "label": "Action:await", "value": "Waits for async work @L360" }, { "label": "Action:guard-clause", "value": "Guards early exit or rejection path @L361" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:355:1", "path": "NexusReader.Web/Program.cs", "line": 355, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 355, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_357_357", "label": "Ensure authenticated user", "diagramId": "method_flows_graph", "nodeRole": "step", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Return Unauthorized if missing", "responsibility": "Return Unauthorized if missing", "technologyHints": [ "csharp", "Minimal API", "Startup/Composition Root", "Local functions for webhook handling", "Retry with exponential backoff for DB migration" ], "detailItems": [ { "label": "Action", "value": "guard-clause" }, { "label": "Condition", "value": "userId null/empty" }, { "label": "Outcomes", "value": "Unauthorized, continue" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge/KnowledgeService, Ebook/Library ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:357:1", "path": "NexusReader.Web/Program.cs", "line": 357, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 357, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_file_nexusreader_application_security_authorization_prouserhandler_cs_file_1", "label": "ProUserHandler", "diagramId": "method_flows_graph", "nodeRole": "dependency", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Constructor: receives and stores a DbContext factory for use by the handler.", "responsibility": "Constructor: receives and stores a DbContext factory for use by the handler.", "technologyHints": [ "csharp", "Authorization Handler", "Repository/Query (EF DbContext)" ], "detailItems": [ { "label": "Owner", "value": "ProUserHandler" }, { "label": "Signature", "value": "(dbContextFactory: IDbContextFactory) -> void" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "Store injected dependency @L17" }, { "label": "Domain", "value": "User, SubscriptionPlan, AITokens / AITokenLimit" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Application/Security/Authorization/ProUserHandler.cs:1:1", "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ] }, { "id": "flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20", "label": "HandleRequirementAsync", "diagramId": "method_flows_graph", "nodeRole": "method", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Core authorization logic: loads the current user from the DB and grants the requirement when the user has unlimited tokens or remaining AI token quota.", "responsibility": "Core authorization logic: loads the current user from the DB and grants the requirement when the user has unlimited tokens or remaining AI token quota.", "technologyHints": [ "csharp", "Authorization Handler", "Repository/Query (EF DbContext)" ], "detailItems": [ { "label": "Owner", "value": "ProUserHandler" }, { "label": "Signature", "value": "(context: AuthorizationHandlerContext, requirement: ProUserRequirement) -> Task" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "Read user id from ClaimsPrincipal @L24" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L24" }, { "label": "Action:branch", "value": "Evaluates branch condition @L25" }, { "label": "Action:guard-clause", "value": "Reject when no user id available @L25" }, { "label": "Action:return", "value": "Returns result @L27" }, { "label": "Action:mapping", "value": "Create DbContext from factory (scoped local using) @L30" }, { "label": "Domain", "value": "User, SubscriptionPlan, AITokens / AITokenLimit" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Application/Security/Authorization/ProUserHandler.cs:20:1", "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 20, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 20, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_24_24", "label": "Reads repository or persistence state", "diagramId": "method_flows_graph", "nodeRole": "step", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "var userId = context.User.FindFirstValue(ClaimTypes.NameIdentifier);", "responsibility": "var userId = context.User.FindFirstValue(ClaimTypes.NameIdentifier);", "technologyHints": [ "csharp", "Authorization Handler", "Repository/Query (EF DbContext)" ], "detailItems": [ { "label": "Owner", "value": "ProUserHandler" }, { "label": "Action", "value": "repository-read" }, { "label": "Domain", "value": "User, SubscriptionPlan, AITokens / AITokenLimit" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Application/Security/Authorization/ProUserHandler.cs:24:1", "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 24, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 24, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ] }, { "id": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "label": "AuthenticationHeaderHandler", "diagramId": "method_flows_graph", "nodeRole": "class", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Delegating handler that secures outgoing HTTP calls by attaching and refreshing JWTs.", "responsibility": "Delegating handler that secures outgoing HTTP calls by attaching and refreshing JWTs.", "technologyHints": [ "csharp", "HTTP DelegatingHandler", "Token auto-refresh", "Scoped resolution for short-lived services", "Concurrency serialization (Semaphore)" ], "detailItems": [ { "label": "Owner", "value": "AuthenticationHeaderHandler" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "4" }, { "label": "_storageService", "value": "INativeStorageService required" }, { "label": "_serviceProvider", "value": "IServiceProvider required" }, { "label": "TokenKey", "value": "string (const) required" }, { "label": "_refreshSemaphore", "value": "SemaphoreSlim (static) required" }, { "label": "Domain", "value": "Authentication, JWT, Token refresh" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs:1:1", "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "label": "SendAsync", "diagramId": "method_flows_graph", "nodeRole": "method", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Intercepts outgoing HTTP requests to add a Bearer token for trusted origins, forwards the request, and on 401 attempts a thread-safe token refresh and optionally retries the request with the new token.", "responsibility": "Intercepts outgoing HTTP requests to add a Bearer token for trusted origins, forwards the request, and on 401 attempts a thread-safe token refresh and optionally retries the request with the new token.", "technologyHints": [ "csharp", "HTTP DelegatingHandler", "Token auto-refresh", "Scoped resolution for short-lived services", "Concurrency serialization (Semaphore)" ], "detailItems": [ { "label": "Owner", "value": "AuthenticationHeaderHandler" }, { "label": "Signature", "value": "(request: HttpRequestMessage, cancellationToken: CancellationToken) -> Task" }, { "label": "Calls", "value": "6" }, { "label": "Action:external-call", "value": "Calls external dependency @L27" }, { "label": "Action:mapping", "value": "Force browser credentials for SSR @L30" }, { "label": "Action:branch", "value": "Detect auth endpoints @L32" }, { "label": "Action:branch", "value": "Trusted host guard @L38" }, { "label": "Action:branch", "value": "Evaluates branch condition @L45" }, { "label": "Action:external-call", "value": "Read stored token @L47" }, { "label": "Domain", "value": "Authentication, JWT, Token refresh" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs:27:1", "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 27, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27", "label": "Calls external dependency", "diagramId": "method_flows_graph", "nodeRole": "step", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)", "responsibility": "protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)", "technologyHints": [ "csharp", "HTTP DelegatingHandler", "Token auto-refresh", "Scoped resolution for short-lived services", "Concurrency serialization (Semaphore)" ], "detailItems": [ { "label": "Owner", "value": "AuthenticationHeaderHandler" }, { "label": "Action", "value": "external-call" }, { "label": "Signature", "value": "(request: HttpRequestMessage, cancellationToken: CancellationToken) -> Task" }, { "label": "Calls", "value": "6" }, { "label": "Action:external-call", "value": "Calls external dependency @L27" }, { "label": "Action:mapping", "value": "Force browser credentials for SSR @L30" }, { "label": "Action:branch", "value": "Detect auth endpoints @L32" }, { "label": "Action:branch", "value": "Trusted host guard @L38" }, { "label": "Action:branch", "value": "Evaluates branch condition @L45" }, { "label": "Action:external-call", "value": "Read stored token @L47" }, { "label": "Domain", "value": "Authentication, JWT, Token refresh" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs:27:1", "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 27, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "label": "CloneHttpRequestMessageAsync", "diagramId": "method_flows_graph", "nodeRole": "method", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Creates a deep clone of an HttpRequestMessage (including content stream and headers) suitable for resending.", "responsibility": "Creates a deep clone of an HttpRequestMessage (including content stream and headers) suitable for resending.", "technologyHints": [ "csharp", "HTTP DelegatingHandler", "Token auto-refresh", "Scoped resolution for short-lived services", "Concurrency serialization (Semaphore)" ], "detailItems": [ { "label": "Owner", "value": "AuthenticationHeaderHandler" }, { "label": "Signature", "value": "(req: HttpRequestMessage) -> Task" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "Create new HttpRequestMessage clone @L114" }, { "label": "Action:branch", "value": "Copy content if present @L119" }, { "label": "Action:branch", "value": "Evaluates branch condition @L119" }, { "label": "Action:mapping", "value": "Copy content stream @L121" }, { "label": "Action:await", "value": "Waits for async work @L122" }, { "label": "Action:loop", "value": "Copy content headers @L126" }, { "label": "Domain", "value": "Authentication, JWT, Token refresh" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs:112:1", "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 112, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 112, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119", "label": "Copy content if present", "diagramId": "method_flows_graph", "nodeRole": "step", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Copy content if present", "responsibility": "Appends JWT only for trusted origins and non-auth endpoints; transparently attempts refresh on 401 using a semaphore to avoid duplicate refreshes; resolves IIdentityService in an explicit scope and will call LogoutAsync on refresh failure; clones HttpRequestMessage to safely retry requests with new token.", "technologyHints": [ "csharp", "HTTP DelegatingHandler", "Token auto-refresh", "Scoped resolution for short-lived services", "Concurrency serialization (Semaphore)" ], "detailItems": [ { "label": "Owner", "value": "AuthenticationHeaderHandler" }, { "label": "Action", "value": "branch" }, { "label": "Condition", "value": "req.Content != null" }, { "label": "Outcomes", "value": "copy-content, no-content" }, { "label": "Domain", "value": "Authentication, JWT, Token refresh" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs:119:1", "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 119, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 119, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] } ], "edgeMetadata": [ { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines_type_10", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "relation": "transforms", "label": "model MauiProgram", "semanticLabel": "model MauiProgram", "semanticTitle": "model MauiProgram", "collapsedLabel": "model MauiProgram", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "sourceTargetKind": "call-site", "outputSummary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers_service_28", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "relation": "uses", "label": "IPlatformService", "semanticLabel": "IPlatformService", "semanticTitle": "IPlatformService", "collapsedLabel": "IPlatformService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "sourceTargetKind": "call-site", "outputSummary": "Platform abstraction implemented by mobile-specific MauiPlatformService", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers_service_29", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "relation": "uses", "label": "INativeStorageService", "semanticLabel": "INativeStorageService", "semanticTitle": "INativeStorageService", "collapsedLabel": "INativeStorageService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "sourceTargetKind": "call-site", "outputSummary": "Native storage implementation for MAUI", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers_service_32", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "relation": "uses", "label": "NexusAuthenticationStateProvider", "semanticLabel": "NexusAuthenticationStateProvider", "semanticTitle": "NexusAuthenticationStateProvider", "collapsedLabel": "NexusAuthenticationStateProvider", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "sourceTargetKind": "call-site", "outputSummary": "Authentication state provider registered for Blazor auth", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33_registers_service_33", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "relation": "uses", "label": "AuthenticationStateProvider", "semanticLabel": "AuthenticationStateProvider", "semanticTitle": "AuthenticationStateProvider", "collapsedLabel": "AuthenticationStateProvider", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "sourceTargetKind": "call-site", "outputSummary": "Registers the framework AuthenticationStateProvider to resolve the NexusAuthenticationStateProvider", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35_registers_service_35", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "relation": "uses", "label": "Authorization", "semanticLabel": "Authorization", "semanticTitle": "Authorization", "collapsedLabel": "Authorization", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "sourceTargetKind": "call-site", "outputSummary": "Adds authorization core services", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38_registers_service_38", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "relation": "uses", "label": "HttpClient", "semanticLabel": "HttpClient", "semanticTitle": "HttpClient", "collapsedLabel": "HttpClient", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "sourceTargetKind": "call-site", "outputSummary": "HttpClient with BaseAddress pointing to local dev backend (http://10.0.2.2:5000)", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41_registers_service_41", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "relation": "uses", "label": "IThemeService", "semanticLabel": "IThemeService", "semanticTitle": "IThemeService", "collapsedLabel": "IThemeService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "sourceTargetKind": "call-site", "outputSummary": "UI theme management", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42_registers_service_42", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "relation": "uses", "label": "IFocusModeService", "semanticLabel": "IFocusModeService", "semanticTitle": "IFocusModeService", "collapsedLabel": "IFocusModeService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "sourceTargetKind": "call-site", "outputSummary": "Focus mode UI behavior", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43_registers_service_43", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "relation": "uses", "label": "IQuizStateService", "semanticLabel": "IQuizStateService", "semanticTitle": "IQuizStateService", "collapsedLabel": "IQuizStateService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "sourceTargetKind": "call-site", "outputSummary": "Quiz state tracking", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44_registers_service_44", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "relation": "uses", "label": "IReaderNavigationService", "semanticLabel": "IReaderNavigationService", "semanticTitle": "IReaderNavigationService", "collapsedLabel": "IReaderNavigationService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "sourceTargetKind": "call-site", "outputSummary": "Reader navigation abstraction", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61_defines_type_61", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "relation": "transforms", "label": "model ThrowingDbContextFactory", "semanticLabel": "model ThrowingDbContextFactory", "semanticTitle": "model ThrowingDbContextFactory", "collapsedLabel": "model ThrowingDbContextFactory", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 61, "sourceTargetKind": "call-site", "outputSummary": "IDbContextFactory implementation that prevents EF DbContext usage in the WASM client by throwing.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66_defines_type_66", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "relation": "transforms", "label": "model ThrowingEmbeddingGenerator", "semanticLabel": "model ThrowingEmbeddingGenerator", "semanticTitle": "model ThrowingEmbeddingGenerator", "collapsedLabel": "model ThrowingEmbeddingGenerator", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 66, "sourceTargetKind": "call-site", "outputSummary": "IEmbeddingGenerator stub that throws on GenerateAsync to prevent embedding generation in WASM.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74_defines_type_74", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "relation": "transforms", "label": "model ThrowingBookStorageService", "semanticLabel": "model ThrowingBookStorageService", "semanticTitle": "model ThrowingBookStorageService", "collapsedLabel": "model ThrowingBookStorageService", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "sourceTargetKind": "call-site", "outputSummary": "IBookStorageService stub that throws for all file storage operations in the WASM client.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84_defines_type_84", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "relation": "transforms", "label": "model ThrowingEbookRepository", "semanticLabel": "model ThrowingEbookRepository", "semanticTitle": "model ThrowingEbookRepository", "collapsedLabel": "model ThrowingEbookRepository", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "sourceTargetKind": "call-site", "outputSummary": "IEbookRepository stub that throws for all repository operations to force use of server API.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94_defines_type_94", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "relation": "transforms", "label": "model ThrowingSyncBroadcaster", "semanticLabel": "model ThrowingSyncBroadcaster", "semanticTitle": "model ThrowingSyncBroadcaster", "collapsedLabel": "model ThrowingSyncBroadcaster", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 94, "sourceTargetKind": "call-site", "outputSummary": "ISyncBroadcaster stub that throws for real-time broadcasting operations in the WASM client.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers_service_18", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "relation": "uses", "label": "IPlatformService", "semanticLabel": "IPlatformService", "semanticTitle": "IPlatformService", "collapsedLabel": "IPlatformService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 18, "sourceTargetKind": "call-site", "outputSummary": "Platform abstraction for browser environment", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webstorageservice_19_registers_service_19", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webstorageservice_19", "relation": "uses", "label": "INativeStorageService", "semanticLabel": "INativeStorageService", "semanticTitle": "INativeStorageService", "collapsedLabel": "INativeStorageService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 19, "sourceTargetKind": "call-site", "outputSummary": "Browser storage implementation", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers_service_28", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "relation": "uses", "label": "IPlatformService", "semanticLabel": "IPlatformService", "semanticTitle": "IPlatformService", "collapsedLabel": "IPlatformService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "sourceTargetKind": "call-site", "outputSummary": "Platform abstraction implemented by mobile-specific MauiPlatformService", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers_service_29", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "relation": "uses", "label": "INativeStorageService", "semanticLabel": "INativeStorageService", "semanticTitle": "INativeStorageService", "collapsedLabel": "INativeStorageService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "sourceTargetKind": "call-site", "outputSummary": "Native storage implementation for MAUI", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers_service_32", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "relation": "uses", "label": "NexusAuthenticationStateProvider", "semanticLabel": "NexusAuthenticationStateProvider", "semanticTitle": "NexusAuthenticationStateProvider", "collapsedLabel": "NexusAuthenticationStateProvider", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "sourceTargetKind": "call-site", "outputSummary": "Authentication state provider registered for Blazor auth", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33_registers_service_33", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "relation": "uses", "label": "AuthenticationStateProvider", "semanticLabel": "AuthenticationStateProvider", "semanticTitle": "AuthenticationStateProvider", "collapsedLabel": "AuthenticationStateProvider", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "sourceTargetKind": "call-site", "outputSummary": "Registers the framework AuthenticationStateProvider to resolve the NexusAuthenticationStateProvider", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35_registers_service_35", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "relation": "uses", "label": "Authorization", "semanticLabel": "Authorization", "semanticTitle": "Authorization", "collapsedLabel": "Authorization", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "sourceTargetKind": "call-site", "outputSummary": "Adds authorization core services", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38_registers_service_38", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "relation": "uses", "label": "HttpClient", "semanticLabel": "HttpClient", "semanticTitle": "HttpClient", "collapsedLabel": "HttpClient", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "sourceTargetKind": "call-site", "outputSummary": "HttpClient with BaseAddress pointing to local dev backend (http://10.0.2.2:5000)", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41_registers_service_41", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "relation": "uses", "label": "IThemeService", "semanticLabel": "IThemeService", "semanticTitle": "IThemeService", "collapsedLabel": "IThemeService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "sourceTargetKind": "call-site", "outputSummary": "UI theme management", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42_registers_service_42", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "relation": "uses", "label": "IFocusModeService", "semanticLabel": "IFocusModeService", "semanticTitle": "IFocusModeService", "collapsedLabel": "IFocusModeService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "sourceTargetKind": "call-site", "outputSummary": "Focus mode UI behavior", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43_registers_service_43", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "relation": "uses", "label": "IQuizStateService", "semanticLabel": "IQuizStateService", "semanticTitle": "IQuizStateService", "collapsedLabel": "IQuizStateService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "sourceTargetKind": "call-site", "outputSummary": "Quiz state tracking", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44_registers_service_44", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "relation": "uses", "label": "IReaderNavigationService", "semanticLabel": "IReaderNavigationService", "semanticTitle": "IReaderNavigationService", "collapsedLabel": "IReaderNavigationService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "sourceTargetKind": "call-site", "outputSummary": "Reader navigation abstraction", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_configures_pipeline_12", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "relation": "calls", "label": "unknown", "semanticLabel": "unknown", "semanticTitle": "unknown", "collapsedLabel": "unknown", "expandedLabel": "configures-pipeline", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "sourceTargetKind": "call-site", "outputSummary": "unknown", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers_service_18", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "relation": "uses", "label": "IPlatformService", "semanticLabel": "IPlatformService", "semanticTitle": "IPlatformService", "collapsedLabel": "IPlatformService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 18, "sourceTargetKind": "call-site", "outputSummary": "Platform abstraction for browser environment", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webstorageservice_19_registers_service_19", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webstorageservice_19", "relation": "uses", "label": "INativeStorageService", "semanticLabel": "INativeStorageService", "semanticTitle": "INativeStorageService", "collapsedLabel": "INativeStorageService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 19, "sourceTargetKind": "call-site", "outputSummary": "Browser storage implementation", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_identityservice_32_registers_service_32", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_identityservice_32", "relation": "uses", "label": "IIdentityService", "semanticLabel": "IIdentityService", "semanticTitle": "IIdentityService", "collapsedLabel": "IIdentityService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 32, "sourceTargetKind": "call-site", "outputSummary": "Client-side identity interactions", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusreader_web_client_handlers_authenticationheaderhandler_40_registers_service_40", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_nexusreader_web_client_handlers_authenticationheaderhandler_40", "relation": "uses", "label": "NexusReader.Web.Client.Handlers.AuthenticationHeaderHandler", "semanticLabel": "NexusReader.Web.Client.Handlers.AuthenticationHeaderHandler", "semanticTitle": "NexusReader.Web.Client.Handlers.AuthenticationHeaderHandler", "collapsedLabel": "NexusReader.Web.Client.Handlers.AuthenticationHeaderHandler", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 40, "sourceTargetKind": "call-site", "outputSummary": "HTTP message handler registered for adding auth headers", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_invokes_12", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "relation": "calls", "label": "CreateMauiApp", "semanticLabel": "CreateMauiApp", "semanticTitle": "CreateMauiApp", "collapsedLabel": "CreateMauiApp", "expandedLabel": "handles-route", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "sourceTargetKind": "call-site", "outputSummary": "Create and configure the MAUI app builder, register application and platform services, configure debugging tools in DEBUG, and build/return the app; catches startup exceptions and rethrows after logging.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_invokes_14", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "relation": "calls", "label": "Begins protected execution", "semanticLabel": "Begins protected execution", "semanticTitle": "Begins protected execution", "collapsedLabel": "Begins protected execution", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 14, "sourceTargetKind": "call-site", "outputSummary": "try", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "relation": "returns", "label": "Build and return app", "semanticLabel": "Build and return app", "semanticTitle": "Build and return app", "collapsedLabel": "Build and return app", "expandedLabel": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "sourceTargetKind": "return-source", "outputSummary": "return builder.Build()", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "relation": "returns", "label": "Returns result", "semanticLabel": "Returns result", "semanticTitle": "Returns result", "collapsedLabel": "Returns result", "expandedLabel": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "sourceTargetKind": "return-source", "outputSummary": "return builder.Build();", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_invokes_59", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "relation": "calls", "label": "handled exception", "semanticLabel": "handled exception", "semanticTitle": "handled exception", "collapsedLabel": "handled exception", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 59, "sourceTargetKind": "call-site", "outputSummary": "catch (Exception ex)", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63_invokes_63", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "relation": "calls", "label": "Throws exception", "semanticLabel": "Throws exception", "semanticTitle": "Throws exception", "collapsedLabel": "Throws exception", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 63, "sourceTargetKind": "call-site", "outputSummary": "throw;", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines_type_10", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "relation": "transforms", "label": "model MauiProgram", "semanticLabel": "model MauiProgram", "semanticTitle": "model MauiProgram", "collapsedLabel": "model MauiProgram", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "sourceTargetKind": "call-site", "outputSummary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers_service_28", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "relation": "uses", "label": "IPlatformService", "semanticLabel": "IPlatformService", "semanticTitle": "IPlatformService", "collapsedLabel": "IPlatformService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "sourceTargetKind": "call-site", "outputSummary": "Platform abstraction implemented by mobile-specific MauiPlatformService", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers_service_29", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "relation": "uses", "label": "INativeStorageService", "semanticLabel": "INativeStorageService", "semanticTitle": "INativeStorageService", "collapsedLabel": "INativeStorageService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "sourceTargetKind": "call-site", "outputSummary": "Native storage implementation for MAUI", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers_service_32", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "relation": "uses", "label": "NexusAuthenticationStateProvider", "semanticLabel": "NexusAuthenticationStateProvider", "semanticTitle": "NexusAuthenticationStateProvider", "collapsedLabel": "NexusAuthenticationStateProvider", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "sourceTargetKind": "call-site", "outputSummary": "Authentication state provider registered for Blazor auth", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33_registers_service_33", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "relation": "uses", "label": "AuthenticationStateProvider", "semanticLabel": "AuthenticationStateProvider", "semanticTitle": "AuthenticationStateProvider", "collapsedLabel": "AuthenticationStateProvider", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "sourceTargetKind": "call-site", "outputSummary": "Registers the framework AuthenticationStateProvider to resolve the NexusAuthenticationStateProvider", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35_registers_service_35", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "relation": "uses", "label": "Authorization", "semanticLabel": "Authorization", "semanticTitle": "Authorization", "collapsedLabel": "Authorization", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "sourceTargetKind": "call-site", "outputSummary": "Adds authorization core services", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38_registers_service_38", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "relation": "uses", "label": "HttpClient", "semanticLabel": "HttpClient", "semanticTitle": "HttpClient", "collapsedLabel": "HttpClient", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "sourceTargetKind": "call-site", "outputSummary": "HttpClient with BaseAddress pointing to local dev backend (http://10.0.2.2:5000)", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41_registers_service_41", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "relation": "uses", "label": "IThemeService", "semanticLabel": "IThemeService", "semanticTitle": "IThemeService", "collapsedLabel": "IThemeService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "sourceTargetKind": "call-site", "outputSummary": "UI theme management", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42_registers_service_42", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "relation": "uses", "label": "IFocusModeService", "semanticLabel": "IFocusModeService", "semanticTitle": "IFocusModeService", "collapsedLabel": "IFocusModeService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "sourceTargetKind": "call-site", "outputSummary": "Focus mode UI behavior", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43_registers_service_43", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "relation": "uses", "label": "IQuizStateService", "semanticLabel": "IQuizStateService", "semanticTitle": "IQuizStateService", "collapsedLabel": "IQuizStateService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "sourceTargetKind": "call-site", "outputSummary": "Quiz state tracking", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44_registers_service_44", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "relation": "uses", "label": "IReaderNavigationService", "semanticLabel": "IReaderNavigationService", "semanticTitle": "IReaderNavigationService", "collapsedLabel": "IReaderNavigationService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "sourceTargetKind": "call-site", "outputSummary": "Reader navigation abstraction", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_configures_pipeline_12", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "relation": "calls", "label": "unknown", "semanticLabel": "unknown", "semanticTitle": "unknown", "collapsedLabel": "unknown", "expandedLabel": "configures-pipeline", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "sourceTargetKind": "call-site", "outputSummary": "unknown", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_program_top_level_29_invokes_29", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_program_top_level_29", "relation": "calls", "label": "Program top-level", "semanticLabel": "Program (top-level)", "semanticTitle": "Program (top-level)", "collapsedLabel": "Program top-level", "expandedLabel": "handles-route", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 29, "sourceTargetKind": "call-site", "outputSummary": "Configure DI, middleware, authentication/authorization, register endpoints and run the web host.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates_condition_62", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_method_nexusreader_web_program_cs_program_top_level_29", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "relation": "calls", "label": "true / false", "semanticLabel": "true / false", "semanticTitle": "true / false", "collapsedLabel": "true / false", "expandedLabel": "evaluates-condition", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 62, "sourceTargetKind": "call-site", "outputSummary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls_back_66", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "relation": "calls", "label": "fallback", "semanticLabel": "fallback", "semanticTitle": "fallback", "collapsedLabel": "fallback", "expandedLabel": "falls-back", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "sourceTargetKind": "call-site", "outputSummary": "else", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_invokes_125", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 125, "sourceTargetKind": "call-site", "outputSummary": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_invokes_126", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 126, "sourceTargetKind": "call-site", "outputSummary": "context.Request.Path.StartsWithSegments(\"/identity\") ||", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_invokes_127", "diagramId": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 127, "sourceTargetKind": "call-site", "outputSummary": "context.Request.Headers[\"Accept\"].ToString().Contains(\"application/json\");", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_invokes_14", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "relation": "calls", "label": "Begins protected execution", "semanticLabel": "Begins protected execution", "semanticTitle": "Begins protected execution", "collapsedLabel": "Begins protected execution", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 14, "sourceTargetKind": "call-site", "outputSummary": "try", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "relation": "returns", "label": "Build and return app", "semanticLabel": "Build and return app", "semanticTitle": "Build and return app", "collapsedLabel": "Build and return app", "expandedLabel": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "sourceTargetKind": "return-source", "outputSummary": "return builder.Build()", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "relation": "returns", "label": "Returns result", "semanticLabel": "Returns result", "semanticTitle": "Returns result", "collapsedLabel": "Returns result", "expandedLabel": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "sourceTargetKind": "return-source", "outputSummary": "return builder.Build();", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_invokes_59", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "relation": "calls", "label": "handled exception", "semanticLabel": "handled exception", "semanticTitle": "handled exception", "collapsedLabel": "handled exception", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 59, "sourceTargetKind": "call-site", "outputSummary": "catch (Exception ex)", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63_invokes_63", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "relation": "calls", "label": "Throws exception", "semanticLabel": "Throws exception", "semanticTitle": "Throws exception", "collapsedLabel": "Throws exception", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 63, "sourceTargetKind": "call-site", "outputSummary": "throw;", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates_condition_62", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_method_nexusreader_web_program_cs_program_top_level_29", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "relation": "calls", "label": "true / false", "semanticLabel": "true / false", "semanticTitle": "true / false", "collapsedLabel": "true / false", "expandedLabel": "evaluates-condition", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 62, "sourceTargetKind": "call-site", "outputSummary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls_back_66", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "relation": "calls", "label": "fallback", "semanticLabel": "fallback", "semanticTitle": "fallback", "collapsedLabel": "fallback", "expandedLabel": "falls-back", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "sourceTargetKind": "call-site", "outputSummary": "else", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_invokes_125", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 125, "sourceTargetKind": "call-site", "outputSummary": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_invokes_126", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 126, "sourceTargetKind": "call-site", "outputSummary": "context.Request.Path.StartsWithSegments(\"/identity\") ||", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_invokes_127", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 127, "sourceTargetKind": "call-site", "outputSummary": "context.Request.Headers[\"Accept\"].ToString().Contains(\"application/json\");", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129_evaluates_condition_129", "diagramId": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "relation": "calls", "label": "true / false", "semanticLabel": "true / false", "semanticTitle": "true / false", "collapsedLabel": "true / false", "expandedLabel": "evaluates-condition", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 129, "sourceTargetKind": "call-site", "outputSummary": "if (isApiRequest)", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines_type_10", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "relation": "transforms", "label": "model MauiProgram", "semanticLabel": "model MauiProgram", "semanticTitle": "model MauiProgram", "collapsedLabel": "model MauiProgram", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "sourceTargetKind": "call-site", "outputSummary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_knowledgerequest_566_maps_dto_566", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_knowledgerequest_566", "relation": "transforms", "label": "dto KnowledgeRequest", "semanticLabel": "dto KnowledgeRequest", "semanticTitle": "dto KnowledgeRequest", "collapsedLabel": "dto KnowledgeRequest", "expandedLabel": "maps-dto", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 566, "sourceTargetKind": "call-site", "outputSummary": "DTO for knowledge-related API calls containing input text and optional ebook id.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_groundednessrequest_567_maps_dto_567", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_groundednessrequest_567", "relation": "transforms", "label": "dto GroundednessRequest", "semanticLabel": "dto GroundednessRequest", "semanticTitle": "dto GroundednessRequest", "collapsedLabel": "dto GroundednessRequest", "expandedLabel": "maps-dto", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 567, "sourceTargetKind": "call-site", "outputSummary": "DTO for verifying groundedness of an answer against context.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_semanticsearchrequest_568_maps_dto_568", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_semanticsearchrequest_568", "relation": "transforms", "label": "dto SemanticSearchRequest", "semanticLabel": "dto SemanticSearchRequest", "semanticTitle": "dto SemanticSearchRequest", "collapsedLabel": "dto SemanticSearchRequest", "expandedLabel": "maps-dto", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 568, "sourceTargetKind": "call-site", "outputSummary": "DTO for semantic search requests.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_askquestionrequest_569_maps_dto_569", "diagramId": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_askquestionrequest_569", "relation": "transforms", "label": "dto AskQuestionRequest", "semanticLabel": "dto AskQuestionRequest", "semanticTitle": "dto AskQuestionRequest", "collapsedLabel": "dto AskQuestionRequest", "expandedLabel": "maps-dto", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 569, "sourceTargetKind": "call-site", "outputSummary": "DTO for asking a question against knowledge with optional ebook scope and limit.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "relation": "returns", "label": "Build and return app", "semanticLabel": "Build and return app", "semanticTitle": "Build and return app", "collapsedLabel": "Build and return app", "expandedLabel": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "sourceTargetKind": "return-source", "outputSummary": "return builder.Build()", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "relation": "returns", "label": "Returns result", "semanticLabel": "Returns result", "semanticTitle": "Returns result", "collapsedLabel": "Returns result", "expandedLabel": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "sourceTargetKind": "return-source", "outputSummary": "return builder.Build();", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_invokes_59", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "relation": "calls", "label": "handled exception", "semanticLabel": "handled exception", "semanticTitle": "handled exception", "collapsedLabel": "handled exception", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 59, "sourceTargetKind": "call-site", "outputSummary": "catch (Exception ex)", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63_invokes_63", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "relation": "calls", "label": "Throws exception", "semanticLabel": "Throws exception", "semanticTitle": "Throws exception", "collapsedLabel": "Throws exception", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 63, "sourceTargetKind": "call-site", "outputSummary": "throw;", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines_type_10", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "relation": "transforms", "label": "model MauiProgram", "semanticLabel": "model MauiProgram", "semanticTitle": "model MauiProgram", "collapsedLabel": "model MauiProgram", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "sourceTargetKind": "call-site", "outputSummary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers_service_28", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "relation": "uses", "label": "IPlatformService", "semanticLabel": "IPlatformService", "semanticTitle": "IPlatformService", "collapsedLabel": "IPlatformService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "sourceTargetKind": "call-site", "outputSummary": "Platform abstraction implemented by mobile-specific MauiPlatformService", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers_service_29", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "relation": "uses", "label": "INativeStorageService", "semanticLabel": "INativeStorageService", "semanticTitle": "INativeStorageService", "collapsedLabel": "INativeStorageService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "sourceTargetKind": "call-site", "outputSummary": "Native storage implementation for MAUI", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers_service_32", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "relation": "uses", "label": "NexusAuthenticationStateProvider", "semanticLabel": "NexusAuthenticationStateProvider", "semanticTitle": "NexusAuthenticationStateProvider", "collapsedLabel": "NexusAuthenticationStateProvider", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "sourceTargetKind": "call-site", "outputSummary": "Authentication state provider registered for Blazor auth", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33_registers_service_33", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "relation": "uses", "label": "AuthenticationStateProvider", "semanticLabel": "AuthenticationStateProvider", "semanticTitle": "AuthenticationStateProvider", "collapsedLabel": "AuthenticationStateProvider", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "sourceTargetKind": "call-site", "outputSummary": "Registers the framework AuthenticationStateProvider to resolve the NexusAuthenticationStateProvider", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35_registers_service_35", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "relation": "uses", "label": "Authorization", "semanticLabel": "Authorization", "semanticTitle": "Authorization", "collapsedLabel": "Authorization", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "sourceTargetKind": "call-site", "outputSummary": "Adds authorization core services", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38_registers_service_38", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "relation": "uses", "label": "HttpClient", "semanticLabel": "HttpClient", "semanticTitle": "HttpClient", "collapsedLabel": "HttpClient", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "sourceTargetKind": "call-site", "outputSummary": "HttpClient with BaseAddress pointing to local dev backend (http://10.0.2.2:5000)", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41_registers_service_41", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "relation": "uses", "label": "IThemeService", "semanticLabel": "IThemeService", "semanticTitle": "IThemeService", "collapsedLabel": "IThemeService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "sourceTargetKind": "call-site", "outputSummary": "UI theme management", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42_registers_service_42", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "relation": "uses", "label": "IFocusModeService", "semanticLabel": "IFocusModeService", "semanticTitle": "IFocusModeService", "collapsedLabel": "IFocusModeService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "sourceTargetKind": "call-site", "outputSummary": "Focus mode UI behavior", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43_registers_service_43", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "relation": "uses", "label": "IQuizStateService", "semanticLabel": "IQuizStateService", "semanticTitle": "IQuizStateService", "collapsedLabel": "IQuizStateService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "sourceTargetKind": "call-site", "outputSummary": "Quiz state tracking", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44_registers_service_44", "diagramId": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "relation": "uses", "label": "IReaderNavigationService", "semanticLabel": "IReaderNavigationService", "semanticTitle": "IReaderNavigationService", "collapsedLabel": "IReaderNavigationService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "sourceTargetKind": "call-site", "outputSummary": "Reader navigation abstraction", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "diagramId": "failure_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "relation": "returns", "label": "Build and return app", "semanticLabel": "Build and return app", "semanticTitle": "Build and return app", "collapsedLabel": "Build and return app", "expandedLabel": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "sourceTargetKind": "return-source", "outputSummary": "return builder.Build()", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "diagramId": "failure_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "relation": "returns", "label": "Returns result", "semanticLabel": "Returns result", "semanticTitle": "Returns result", "collapsedLabel": "Returns result", "expandedLabel": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "sourceTargetKind": "return-source", "outputSummary": "return builder.Build();", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates_condition_62", "diagramId": "failure_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_method_nexusreader_web_program_cs_program_top_level_29", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "relation": "calls", "label": "true / false", "semanticLabel": "true / false", "semanticTitle": "true / false", "collapsedLabel": "true / false", "expandedLabel": "evaluates-condition", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 62, "sourceTargetKind": "call-site", "outputSummary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls_back_66", "diagramId": "failure_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "relation": "calls", "label": "fallback", "semanticLabel": "fallback", "semanticTitle": "fallback", "collapsedLabel": "fallback", "expandedLabel": "falls-back", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "sourceTargetKind": "call-site", "outputSummary": "else", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129_evaluates_condition_129", "diagramId": "failure_flow_2_nexusreader_maui_mauiprogram_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "relation": "calls", "label": "true / false", "semanticLabel": "true / false", "semanticTitle": "true / false", "collapsedLabel": "true / false", "expandedLabel": "evaluates-condition", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 129, "sourceTargetKind": "call-site", "outputSummary": "if (isApiRequest)", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_invokes_12", "diagramId": "method_flows_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "relation": "calls", "label": "CreateMauiApp", "semanticLabel": "CreateMauiApp", "semanticTitle": "CreateMauiApp", "collapsedLabel": "CreateMauiApp", "expandedLabel": "handles-route", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "sourceTargetKind": "call-site", "outputSummary": "Create and configure the MAUI app builder, register application and platform services, configure debugging tools in DEBUG, and build/return the app; catches startup exceptions and rethrows after logging.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_invokes_14", "diagramId": "method_flows_graph", "from": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "relation": "calls", "label": "Begins protected execution", "semanticLabel": "Begins protected execution", "semanticTitle": "Begins protected execution", "collapsedLabel": "Begins protected execution", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 14, "sourceTargetKind": "call-site", "outputSummary": "try", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_configures_pipeline_12", "diagramId": "method_flows_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "relation": "calls", "label": "unknown", "semanticLabel": "unknown", "semanticTitle": "unknown", "collapsedLabel": "unknown", "expandedLabel": "configures-pipeline", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "sourceTargetKind": "call-site", "outputSummary": "unknown", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250_invokes_250", "diagramId": "method_flows_graph", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250", "relation": "calls", "label": "GetEpubContent GET / api / epub / ebookId / index", "semanticLabel": "GetEpubContent (GET /api/epub/{ebookId}/{index})", "semanticTitle": "GetEpubContent (GET /api/epub/{ebookId}/{index})", "collapsedLabel": "GetEpubContent GET / api / epub / ebookId / index", "expandedLabel": "handles-route", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 250, "sourceTargetKind": "call-site", "outputSummary": "Return EPUB page content for an ebook index for the current user.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250_flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_252_252_evaluates_condition_252", "diagramId": "method_flows_graph", "from": "flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250", "to": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_252_252", "relation": "calls", "label": "continue", "semanticLabel": "continue", "semanticTitle": "continue", "collapsedLabel": "continue", "expandedLabel": "evaluates-condition", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 252, "sourceTargetKind": "call-site", "outputSummary": "var userId = user.FindFirstValue(ClaimTypes.NameIdentifier)", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355_invokes_355", "diagramId": "method_flows_graph", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355", "relation": "calls", "label": "GetMyEbooks GET / api / library / books", "semanticLabel": "GetMyEbooks (GET /api/library/books)", "semanticTitle": "GetMyEbooks (GET /api/library/books)", "collapsedLabel": "GetMyEbooks GET / api / library / books", "expandedLabel": "handles-route", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 355, "sourceTargetKind": "call-site", "outputSummary": "Return list of ebooks for the authenticated user via a GetMyEbooksQuery.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_357_357_evaluates_condition_357", "diagramId": "method_flows_graph", "from": "flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355", "to": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_357_357", "relation": "calls", "label": "Unauthorized / continue", "semanticLabel": "Unauthorized / continue", "semanticTitle": "Unauthorized / continue", "collapsedLabel": "Unauthorized / continue", "expandedLabel": "evaluates-condition", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 357, "sourceTargetKind": "call-site", "outputSummary": "Return Unauthorized if missing", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_application_security_authorization_prouserhandler_cs_file_1_flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20_invokes_20", "diagramId": "method_flows_graph", "from": "flow_file_nexusreader_application_security_authorization_prouserhandler_cs_file_1", "to": "flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20", "relation": "calls", "label": "HandleRequirementAsync", "semanticLabel": "HandleRequirementAsync", "semanticTitle": "HandleRequirementAsync", "collapsedLabel": "HandleRequirementAsync", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 20, "sourceTargetKind": "call-site", "outputSummary": "Core authorization logic: loads the current user from the DB and grants the requirement when the user has unlimited tokens or remaining AI token quota.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs" ] }, { "id": "edge_flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_24_24_invokes_24", "diagramId": "method_flows_graph", "from": "flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_24_24", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 24, "sourceTargetKind": "call-site", "outputSummary": "var userId = context.User.FindFirstValue(ClaimTypes.NameIdentifier);", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_invokes_27", "diagramId": "method_flows_graph", "from": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "to": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "relation": "calls", "label": "SendAsync", "semanticLabel": "SendAsync", "semanticTitle": "SendAsync", "collapsedLabel": "SendAsync", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27, "sourceTargetKind": "call-site", "outputSummary": "Intercepts outgoing HTTP requests to add a Bearer token for trusted origins, forwards the request, and on 401 attempts a thread-safe token refresh and optionally retries the request with the new token.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "edge_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27_invokes_27", "diagramId": "method_flows_graph", "from": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27", "relation": "calls", "label": "Calls external dependency", "semanticLabel": "Calls external dependency", "semanticTitle": "Calls external dependency", "collapsedLabel": "Calls external dependency", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27, "sourceTargetKind": "call-site", "outputSummary": "protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112_invokes_112", "diagramId": "method_flows_graph", "from": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "to": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "relation": "calls", "label": "CloneHttpRequestMessageAsync", "semanticLabel": "CloneHttpRequestMessageAsync", "semanticTitle": "CloneHttpRequestMessageAsync", "collapsedLabel": "CloneHttpRequestMessageAsync", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 112, "sourceTargetKind": "call-site", "outputSummary": "Creates a deep clone of an HttpRequestMessage (including content stream and headers) suitable for resending.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "edge_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119_evaluates_condition_119", "diagramId": "method_flows_graph", "from": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119", "relation": "calls", "label": "copy-content / no-content", "semanticLabel": "copy-content / no-content", "semanticTitle": "copy-content / no-content", "collapsedLabel": "copy-content / no-content", "expandedLabel": "evaluates-condition", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 119, "sourceTargetKind": "call-site", "outputSummary": "Copy content if present", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] } ], "contextBagDebug": { "id": "top_business_flows_md", "bagType": "module", "title": "Top Business Flows context bag", "anchorFiles": [ "NexusReader.Web.Client/Program.cs", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs" ], "includedFiles": [ { "path": "NexusReader.Maui/MauiProgram.cs", "reason": "Selected as an entrypoint anchor for this flow scope", "source": "entrypoint" }, { "path": "NexusReader.Web.Client/Program.cs", "reason": "Selected as an entrypoint anchor for this flow scope", "source": "entrypoint" }, { "path": "NexusReader.Web/Program.cs", "reason": "Selected as an entrypoint anchor for this flow scope", "source": "entrypoint" }, { "path": "NexusReader.Application/DTOs/User/AuthorDto.cs", "reason": "Included because it likely stabilizes the contracts or business data in this scope", "source": "type-reference" }, { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "reason": "Included because it likely participates in the core orchestration path", "source": "scope" }, { "path": "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "reason": "Included because it belongs to the resolved document scope", "source": "scope" }, { "path": "NexusReader.Domain/Entities/Author.cs", "reason": "Included because it belongs to the resolved document scope", "source": "scope" }, { "path": "NexusReader.UI.Shared/Layout/AuthLayout.razor", "reason": "Included because it belongs to the resolved document scope", "source": "scope" }, { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "reason": "Included because it likely participates in the core orchestration path", "source": "scope" }, { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "reason": "Included because it belongs to the resolved document scope", "source": "scope" }, { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "reason": "Included because it belongs to the resolved document scope", "source": "scope" }, { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "reason": "Included because it belongs to the resolved document scope", "source": "scope" }, { "path": "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "reason": "Included because it likely stabilizes the contracts or business data in this scope", "source": "type-reference" }, { "path": "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "reason": "Included because it likely stabilizes the contracts or business data in this scope", "source": "type-reference" }, { "path": "NexusReader.Application/Abstractions/Messaging/IQuery.cs", "reason": "Included because it likely stabilizes the contracts or business data in this scope", "source": "type-reference" }, { "path": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "reason": "Included because it is called by an anchor method (call-chain widening)", "source": "call-chain" } ], "relatedDomains": [ "auth", "account" ], "relatedEntrypoints": [ "NexusReader.Web.Client/Program.cs", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs" ], "confidence": 0.75 }, "flowGraph": { "contextBagId": "top_business_flows_md", "nodes": [ { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "label": "MauiProgram", "role": "program-entry", "layer": "unknown", "kind": "entrypoint", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "label": "CreateMauiApp", "role": "program-entry", "layer": "unknown", "kind": "method", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 12 } ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "label": "Begins protected execution", "role": "program-entry", "layer": "unknown", "kind": "action", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 14, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 14 } ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "label": "Build and return app", "role": "program-entry", "layer": "unknown", "kind": "action", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 57 } ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "label": "Handles exception path", "role": "program-entry", "layer": "unknown", "kind": "action", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 59, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 59 } ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "label": "Throws exception", "role": "program-entry", "layer": "unknown", "kind": "action", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 63, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 63 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "label": "MauiProgram", "role": "unknown", "layer": "unknown", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 10 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "label": "MauiPlatformService", "role": "service", "layer": "unknown", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 28 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "label": "MauiStorageService", "role": "service", "layer": "unknown", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 29 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "label": "NexusAuthenticationStateProvider", "role": "service", "layer": "unknown", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 32 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "label": "NexusAuthenticationStateProvider (resolved)", "role": "service", "layer": "unknown", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 33 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "label": "AuthorizationCore", "role": "service", "layer": "unknown", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 35 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "label": "HttpClient", "role": "service", "layer": "unknown", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 38 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "label": "ThemeService", "role": "service", "layer": "unknown", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 41 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "label": "FocusModeService", "role": "service", "layer": "unknown", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 42 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "label": "QuizStateService", "role": "service", "layer": "unknown", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 43 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "label": "ReaderNavigationService", "role": "service", "layer": "unknown", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 44 } ] }, { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "label": "Program.cs", "role": "startup", "layer": "frontend", "kind": "entrypoint", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_program_top_level_15", "label": "Program (top-level)", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 15, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 15 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_program_top_level_await_59_59", "label": "Waits for async work", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 59, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 59 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_createdbcontext_61", "label": "CreateDbContext", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 61, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 61 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_createdbcontext_throw_63_63", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 63, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 63 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_generateasync_69", "label": "GenerateAsync", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 69, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 69 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_generateasync_throw_70_70", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 70, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 70 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_getservice_71", "label": "GetService", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 71 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "label": "Return null", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 71 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_saveebookasync_byte_74", "label": "SaveEbookAsync (byte[])", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 74 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_saveebookasync_byte_throw_78_78", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 78 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_saveebookasync_byte_throw_79_79", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 79 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_saveebookasync_stream_74", "label": "SaveEbookAsync (Stream)", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 74 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_saveebookasync_stream_throw_78_78", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 78 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_saveebookasync_stream_throw_79_79", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 79 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_saveebookasync_stream_throw_80_80", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 80, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 80 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_savecoverasync_byte_74", "label": "SaveCoverAsync (byte[])", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 74 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_78_78", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 78 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_79_79", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 79 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_80_80", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 80, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 80 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_81_81", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 81, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 81 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_savecoverasync_stream_74", "label": "SaveCoverAsync (Stream)", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 74 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_78_78", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 78 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_79_79", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 79 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_80_80", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 80, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 80 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_81_81", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 81, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 81 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_84", "label": "FindAuthorByNameAsync", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 84 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "label": "Reads repository or persistence state", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_throw_88_88", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_throw_89_89", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 89, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 89 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_addauthor_84", "label": "AddAuthor", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 84 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_addauthor_repository_read_88_88", "label": "Reads repository or persistence state", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_addauthor_throw_88_88", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_addauthor_throw_89_89", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 89, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 89 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_addauthor_throw_90_90", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 90, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 90 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_addebook_84", "label": "AddEbook", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 84 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_addebook_repository_read_88_88", "label": "Reads repository or persistence state", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_addebook_throw_88_88", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_addebook_throw_89_89", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 89, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 89 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_addebook_throw_90_90", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 90, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 90 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_addebook_throw_91_91", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 91, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 91 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_savechangesasync_84", "label": "SaveChangesAsync", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 84 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_savechangesasync_repository_read_88_88", "label": "Reads repository or persistence state", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_88_88", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_89_89", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 89, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 89 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_90_90", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 90, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 90 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_91_91", "label": "Throws exception", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 91, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 91 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "label": "ThrowingDbContextFactory", "role": "unknown", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 61, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 61 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "label": "ThrowingEmbeddingGenerator", "role": "unknown", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 66, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 66 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "label": "ThrowingBookStorageService", "role": "unknown", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 74 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "label": "ThrowingEbookRepository", "role": "unknown", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 84 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "label": "ThrowingSyncBroadcaster", "role": "unknown", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 94, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 94 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "label": "WebPlatformService", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 18 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_webstorageservice_19", "label": "WebStorageService", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 19, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 19 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_identityservice_32", "label": "IdentityService", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 32, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 32 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusreader_web_client_handlers_authenticationheaderhandler_40", "label": "NexusReader.Web.Client.Handlers.AuthenticationHeaderHandler", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 40, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 40 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "label": "ThrowingDbContextFactory", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 49, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 49 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusreader_application_extension_55", "label": "NexusReader.Application (extension)", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 55, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 55 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_buildandrun_59", "label": "BuildAndRun", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 59, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 59 } ] }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "label": "Program.cs", "role": "program-entry", "layer": "application", "kind": "entrypoint", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_web_program_cs_program_top_level_29", "label": "Program (top-level)", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 29, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 29 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 62 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "label": "Falls back to alternate path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 66 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 125, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 125 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 126, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 126 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 127, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 127 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 129, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 129 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_131_131", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 131, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 131 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_133_133", "label": "Falls back to alternate path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 133, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 133 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_135_135", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 135, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 135 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_137_137", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 137, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 137 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_166_166", "label": "Startup DI validation for infrastructure marker", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 166, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 166 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_169_169", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 169, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 169 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_throw_171_171", "label": "Throws exception", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 171, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 171 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_validation_171_171", "label": "Validates input or state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 171, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 171 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_181_181", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 181, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 181 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_loop_186_186", "label": "Repeats work over a collection or condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 186, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 186 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_try_188_188", "label": "Begins protected execution", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 188, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 188 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_190_190", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 190, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 190 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_195_195", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 195, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 195 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_196_196", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 196, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 196 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_198_198", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 198, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 198 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_catch_204_204", "label": "Handles exception path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 204, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 204 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_206_206", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 206, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 206 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_206_206", "label": "Logs runtime state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 206, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 206 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_208_208", "label": "Logs runtime state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 208, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 208 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_211_211", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 211, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 211 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_catch_214_214", "label": "Handles exception path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 214, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 214 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_216_216", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 216, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 216 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_216_216", "label": "Logs runtime state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 216, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 216 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_218_218", "label": "Logs runtime state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 218, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 218 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_throw_220_220", "label": "Throws exception", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 220, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 220 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_226_226", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 226, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 226 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_230_230", "label": "Falls back to alternate path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 230, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 230 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 237, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 237 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_252_252", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 252, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 252 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_253_253", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 253, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 253 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_255_255", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 255, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 255 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_258_258", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 258, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 258 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_267_267", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 267, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 267 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_268_268", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 268, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 268 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_269_269", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 269, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 269 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_270_270", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 270, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 270 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_275_275", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 275, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 275 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_276_276", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 276, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 276 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_277_277", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 277, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 277 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_278_278", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 278, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 278 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_283_283", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 283, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 283 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_284_284", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 284, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 284 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_285_285", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 285, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 285 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_286_286", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 286, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 286 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_291_291", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 291, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 291 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_292_292", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 292, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 292 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_293_293", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 293, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 293 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_294_294", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 294, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 294 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_299_299", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 299, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 299 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_300_300", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 300, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 300 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_301_301", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 301, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 301 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_302_302", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 302, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 302 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_307_307", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 307, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 307 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_308_308", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 308, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 308 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_309_309", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 309, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 309 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_310_310", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 310, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 310 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_315_315", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 315, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 315 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_316_316", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 316, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 316 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_317_317", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 317, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 317 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_318_318", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 318, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 318 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_323_323", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 323, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 323 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_324_324", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 324, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 324 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_327_327", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 327, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 327 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_332_332", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 332, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 332 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_333_333", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 333, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 333 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_349_349", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 349, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 349 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_350_350", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 350, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 350 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_352_352", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 352, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 352 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_352_352", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 352, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 352 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_357_357", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 357, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 357 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_358_358", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 358, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 358 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_360_360", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 360, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 360 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_361_361", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 361, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 361 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_364_364", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 364, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 364 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_373_373", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 373, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 373 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_374_374", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 374, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 374 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_374_374", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 374, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 374 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_try_377_377", "label": "Begins protected execution", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 377, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 377 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_381_381", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 381, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 381 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_switch_385_385", "label": "Branches across multiple outcomes", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 385, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 385 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_389_389", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 389, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 389 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_394_394", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 394, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 394 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_399_399", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 399, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 399 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_402_402", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 402, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 402 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_catch_404_404", "label": "Handles exception path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 404, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 404 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_406_406", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 406, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 406 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_416_416", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 416, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 416 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_418_418", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 418, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 418 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_418_418", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 418, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 418 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_419_419", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 419, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 419 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_422_422", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 422, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 422 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_424_424", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 424, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 424 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_430_430", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 430, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 430 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_439_439", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 439, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 439 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_441_441", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 441, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 441 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_441_441", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 441, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 441 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_442_442", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 442, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 442 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_444_444", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 444, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 444 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_444_444", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 444, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 444 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_447_447", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 447, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 447 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_460_460", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 460, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 460 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_469_469", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 469, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 469 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_470_470", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 470, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 470 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_472_472", "label": "Logs runtime state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 472, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 472 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_473_473", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 473, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 473 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_476_476", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 476, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 476 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_477_477", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 477, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 477 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_479_479", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 479, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 479 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_480_480", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 480, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 480 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_483_483", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 483, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 483 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_485_485", "label": "Logs runtime state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 485, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 485 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_485_485", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 485, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 485 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_486_486", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 486, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 486 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_490_490", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 490, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 490 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_491_491", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 491, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 491 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_494_494", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 494, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 494 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_496_496", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 496, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 496 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_498_498", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 498, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 498 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_499_499", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 499, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 499 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_501_501", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 501, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 501 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_loop_505_505", "label": "Repeats work over a collection or condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 505, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 505 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_507_507", "label": "Logs runtime state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 507, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 507 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_510_510", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 510, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 510 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_512_512", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 512, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 512 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_516_516", "label": "Logs runtime state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 516, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 516 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_517_517", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 517, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 517 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_528_528", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 528, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 528 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_529_529", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 529, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 529 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_532_532", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 532, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 532 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_536_536", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 536, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 536 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_543_543", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 543, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 543 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_545_545", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 545, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 545 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_550_550", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 550, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 550 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_551_551", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 551, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 551 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_await_553_553", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 553, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 553 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_554_554", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 554, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 554 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_554_554", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 554, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 554 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_556_556", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 556, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 556 } ] }, { "id": "flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250", "label": "GetEpubContent (GET /api/epub/{ebookId}/{index})", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 250, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 250 } ] }, { "id": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_252_252", "label": "Extract userId", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 252, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 252 } ] }, { "id": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_repository_read_252_252", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 252, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 252 } ] }, { "id": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_await_253_253", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 253, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 253 } ] }, { "id": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_255", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 255, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 255 } ] }, { "id": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_branch_255_255", "label": "Return OK or BadRequest based on result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 255, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 255 } ] }, { "id": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_return_258_258", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 258, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 258 } ] }, { "id": "flow_method_nexusreader_web_program_cs_knowledge_api_group_mappings_261", "label": "Knowledge API group mappings", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 261, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 261 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_267_267", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 267, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 267 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_267_267", "label": "Resolve tenantId", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 267, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 267 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_268_268", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 268, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 268 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_269_269", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 269, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 269 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_branch_269_269", "label": "Return OK or BadRequest on service result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 269, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 269 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_270_270", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 270, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 270 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_275_275", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 275, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 275 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_276_276", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 276, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 276 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_277_277", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 277, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 277 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_278_278", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 278, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 278 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_283_283", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 283, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 283 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_284_284", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 284, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 284 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_285_285", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 285, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 285 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_286_286", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 286, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 286 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_291_291", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 291, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 291 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_292_292", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 292, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 292 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_293_293", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 293, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 293 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_294_294", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 294, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 294 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_299_299", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 299, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 299 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_300_300", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 300, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 300 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_301_301", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 301, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 301 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_302_302", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 302, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 302 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_307_307", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 307, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 307 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_308_308", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 308, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 308 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_309_309", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 309, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 309 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_310_310", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 310, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 310 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_315_315", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 315, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 315 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_316_316", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 316, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 316 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_317_317", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 317, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 317 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_318_318", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 318, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 318 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_323_323", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 323, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 323 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_324_324", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 324, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 324 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_327_327", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 327, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 327 } ] }, { "id": "flow_method_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_330", "label": "IngestEbook (POST /api/library/ingest)", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 330, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 330 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_332_332", "label": "Ensure authenticated user", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 332, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 332 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_repository_read_332_332", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 332, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 332 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_333_333", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 333, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 333 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_await_349_349", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 349, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 349 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_350_350", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 350, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 350 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_repository_read_352_352", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 352, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 352 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_return_352_352", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 352, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 352 } ] }, { "id": "flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355", "label": "GetMyEbooks (GET /api/library/books)", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 355, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 355 } ] }, { "id": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_357_357", "label": "Ensure authenticated user", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 357, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 357 } ] }, { "id": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_repository_read_357_357", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 357, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 357 } ] }, { "id": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_358_358", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 358, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 358 } ] }, { "id": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_await_360_360", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 360, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 360 } ] }, { "id": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_361_361", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 361, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 361 } ] }, { "id": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_branch_361_361", "label": "Return OK or BadRequest based on mediator result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 361, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 361 } ] }, { "id": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_return_364_364", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 364, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 364 } ] }, { "id": "flow_method_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_367", "label": "StripeWebhook (POST /api/StripeWebhook)", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 367, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 367 } ] }, { "id": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_373_373", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 373, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 373 } ] }, { "id": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_repository_read_374_374", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 374, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 374 } ] }, { "id": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_374_374", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 374, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 374 } ] }, { "id": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_try_377_377", "label": "Begins protected execution", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 377, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 377 } ] }, { "id": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_repository_read_381_381", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 381, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 381 } ] }, { "id": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_switch_385_385", "label": "Branches across multiple outcomes", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 385, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 385 } ] }, { "id": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_389_389", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 389, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 389 } ] }, { "id": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_394_394", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 394, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 394 } ] }, { "id": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_399_399", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 399, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 399 } ] }, { "id": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_return_402_402", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 402, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 402 } ] }, { "id": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_catch_404_404", "label": "Handles exception path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 404, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 404 } ] }, { "id": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_return_406_406", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 406, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 406 } ] }, { "id": "flow_method_nexusreader_web_program_cs_handlesubscriptionsuccess_410", "label": "HandleSubscriptionSuccess", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 410, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 410 } ] }, { "id": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_guard_clause_416_416", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 416, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 416 } ] }, { "id": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_repository_read_418_418", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 418, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 418 } ] }, { "id": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_await_418_418", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 418, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 418 } ] }, { "id": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_branch_419_419", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 419, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 419 } ] }, { "id": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_await_422_422", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 422, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 422 } ] }, { "id": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_branch_424_424", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 424, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 424 } ] }, { "id": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_await_430_430", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 430, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 430 } ] }, { "id": "flow_method_nexusreader_web_program_cs_handlesubscriptioncancellation_434", "label": "HandleSubscriptionCancellation", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 434, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 434 } ] }, { "id": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_guard_clause_439_439", "label": "Guards early exit or rejection path", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 439, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 439 } ] }, { "id": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_repository_read_441_441", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 441, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 441 } ] }, { "id": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_await_441_441", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 441, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 441 } ] }, { "id": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_branch_442_442", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 442, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 442 } ] }, { "id": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_repository_read_444_444", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 444, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 444 } ] }, { "id": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_await_444_444", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 444, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 444 } ] }, { "id": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_await_447_447", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 447, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 447 } ] }, { "id": "flow_method_nexusreader_web_program_cs_map_identity_api_mapgroup_identity_451", "label": "Map Identity API (MapGroup /identity)", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 451, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 451 } ] }, { "id": "flow_method_nexusreader_web_program_cs_identity_login_get_identity_login_google_453", "label": "Identity Login (GET /identity/login/google)", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 453, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 453 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_login_get_identity_login_google_return_460_460", "label": "Return Challenge to Google", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 460, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 460 } ] }, { "id": "flow_method_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_463", "label": "Identity Callback (GET /identity/callback/google)", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 463, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 463 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_guard_clause_469_469", "label": "Fail if external login info is missing", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 469, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 469 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_469_469", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 469, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 469 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_470_470", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 470, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 470 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_472_472", "label": "Logs runtime state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 472, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 472 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_473_473", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 473, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 473 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_476_476", "label": "Handle existing external login sign-in", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 476, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 476 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_476_476", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 476, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 476 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_477_477", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 477, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 477 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_479_479", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 479, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 479 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_480_480", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 480, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 480 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_483_483", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 483, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 483 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_485_485", "label": "Logs runtime state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 485, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 485 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_485_485", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 485, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 485 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_486_486", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 486, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 486 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_490_490", "label": "Reads repository or persistence state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 490, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 490 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_491_491", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 491, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 491 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_494_494", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 494, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 494 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_496_496", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 496, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 496 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_498_498", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 498, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 498 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_499_499", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 499, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 499 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_501_501", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 501, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 501 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_loop_505_505", "label": "Repeats work over a collection or condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 505, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 505 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_507_507", "label": "Logs runtime state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 507, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 507 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_510_510", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 510, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 510 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_512_512", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 512, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 512 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_516_516", "label": "Logs runtime state", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 516, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 516 } ] }, { "id": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_517_517", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 517, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 517 } ] }, { "id": "flow_method_nexusreader_web_program_cs_account_login_form_post_account_login_form_520", "label": "Account Login Form (POST /account/login-form)", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 520, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 520 } ] }, { "id": "flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_await_528_528", "label": "Waits for async work", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 528, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 528 } ] }, { "id": "flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_branch_529_529", "label": "Evaluates branch condition", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 529, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 529 } ] }, { "id": "flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_return_532_532", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 532, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 532 } ] }, { "id": "flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_return_536_536", "label": "Returns result", "role": "program-entry", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 536, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 536 } ] }, { "id": "flow_type_nexusreader_web_program_cs_knowledgerequest_566", "label": "KnowledgeRequest", "role": "dto", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 566, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 566 } ] }, { "id": "flow_type_nexusreader_web_program_cs_groundednessrequest_567", "label": "GroundednessRequest", "role": "dto", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 567, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 567 } ] }, { "id": "flow_type_nexusreader_web_program_cs_semanticsearchrequest_568", "label": "SemanticSearchRequest", "role": "dto", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 568, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 568 } ] }, { "id": "flow_type_nexusreader_web_program_cs_askquestionrequest_569", "label": "AskQuestionRequest", "role": "dto", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 569, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 569 } ] }, { "id": "flow_type_nexusreader_web_program_cs_framework_34", "label": "framework", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 34, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 34 } ] }, { "id": "flow_type_nexusreader_web_program_cs_webplatformservice_47", "label": "WebPlatformService", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 47 } ] }, { "id": "flow_type_nexusreader_web_program_cs_named_httpclient_58", "label": "named HttpClient", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 58, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 58 } ] }, { "id": "flow_type_nexusreader_web_program_cs_serveridentityservice_75", "label": "ServerIdentityService", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 75, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 75 } ] }, { "id": "flow_type_nexusreader_web_program_cs_addapplication_78", "label": "AddApplication()", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 78 } ] }, { "id": "flow_type_nexusreader_web_program_cs_addinfrastructure_iconfiguration_79", "label": "AddInfrastructure(IConfiguration)", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 79 } ] }, { "id": "flow_type_nexusreader_web_program_cs_registerservicesfromassemblies_81", "label": "RegisterServicesFromAssemblies", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 81, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 81 } ] }, { "id": "flow_type_nexusreader_web_program_cs_tokenlimithandler_87", "label": "TokenLimitHandler", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 87, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 87 } ] }, { "id": "flow_type_nexusreader_web_program_cs_nexusreader_infrastructure_services_billingservice_93", "label": "NexusReader.Infrastructure.Services.BillingService", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 93, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 93 } ] }, { "id": "flow_type_nexusreader_web_program_cs_identity_ef_stores_107", "label": "Identity + EF stores", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 107, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 107 } ] }, { "id": "flow_method_nexusreader_web_program_cs_usehangfiredashboard_163", "label": "UseHangfireDashboard", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 163, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 163 } ] }, { "id": "flow_method_nexusreader_web_program_cs_database_initialization_and_seeding_with_retries_175", "label": "Database initialization and seeding with retries", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 175, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 175 } ] }, { "id": "flow_method_nexusreader_web_program_cs_configure_pipeline_and_run_225", "label": "Configure pipeline and run", "role": "program-entry", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 225, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 225 } ] }, { "id": "flow_file_nexusreader_application_dtos_user_authordto_cs_file_1", "label": "AuthorDto", "role": "dto", "layer": "application", "kind": "file", "filePath": "NexusReader.Application/DTOs/User/AuthorDto.cs", "sourcePath": "NexusReader.Application/DTOs/User/AuthorDto.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Application/DTOs/User/AuthorDto.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/DTOs/User/AuthorDto.cs", "line": 1 } ] }, { "id": "flow_type_nexusreader_application_dtos_user_authordto_cs_authordto_3", "label": "AuthorDto", "role": "dto", "layer": "application", "kind": "type", "filePath": "NexusReader.Application/DTOs/User/AuthorDto.cs", "sourcePath": "NexusReader.Application/DTOs/User/AuthorDto.cs", "sourceLine": 3, "evidencePaths": [ "NexusReader.Application/DTOs/User/AuthorDto.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/DTOs/User/AuthorDto.cs", "line": 3 } ] }, { "id": "flow_file_nexusreader_application_security_authorization_prouserhandler_cs_file_1", "label": "ProUserHandler", "role": "handler", "layer": "application", "kind": "file", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20", "label": "HandleRequirementAsync", "role": "handler", "layer": "application", "kind": "method", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 20, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 20 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_24_24", "label": "Reads repository or persistence state", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 24, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 24 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_25_25", "label": "Evaluates branch condition", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 25, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 25 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_guard_clause_25_25", "label": "Reject when no user id available", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 25, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 25 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_27_27", "label": "Returns result", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 27, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 27 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_await_31_31", "label": "Waits for async work", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 31, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 31 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_35_35", "label": "Evaluates branch condition", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 35, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 35 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_37_37", "label": "Returns result", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 37, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 37 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_40_40", "label": "Unlimited tokens rule", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 40, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 40 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_41_41", "label": "Evaluates branch condition", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 41, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 41 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_43_43", "label": "Reads repository or persistence state", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 43, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 43 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_44_44", "label": "Returns result", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 44, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 44 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_47_47", "label": "Token quota rule", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 47 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_48_48", "label": "Evaluates branch condition", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 48, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 48 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_50_50", "label": "Reads repository or persistence state", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 50, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 50 } ] }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_51_51", "label": "Returns result", "role": "handler", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 51, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 51 } ] }, { "id": "flow_file_nexusreader_application_security_authorization_prouserrequirement_cs_file_1", "label": "ProUserRequirement", "role": "middleware", "layer": "application", "kind": "file", "filePath": "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserRequirement.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "line": 1 } ] }, { "id": "flow_type_nexusreader_application_security_authorization_prouserrequirement_cs_prouserrequirement_8", "label": "ProUserRequirement", "role": "unknown", "layer": "application", "kind": "type", "filePath": "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "sourceLine": 8, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserRequirement.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "line": 8 } ] }, { "id": "flow_file_nexusreader_domain_entities_author_cs_file_1", "label": "Author", "role": "entity", "layer": "domain", "kind": "file", "filePath": "NexusReader.Domain/Entities/Author.cs", "sourcePath": "NexusReader.Domain/Entities/Author.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Domain/Entities/Author.cs" ], "evidenceReferences": [ { "path": "NexusReader.Domain/Entities/Author.cs", "line": 1 } ] }, { "id": "flow_type_nexusreader_domain_entities_author_cs_author_5", "label": "Author", "role": "entity", "layer": "domain", "kind": "type", "filePath": "NexusReader.Domain/Entities/Author.cs", "sourcePath": "NexusReader.Domain/Entities/Author.cs", "sourceLine": 5, "evidencePaths": [ "NexusReader.Domain/Entities/Author.cs" ], "evidenceReferences": [ { "path": "NexusReader.Domain/Entities/Author.cs", "line": 5 } ] }, { "id": "flow_file_nexusreader_ui_shared_layout_authlayout_razor_file_1", "label": "AuthLayout", "role": "ui-component", "layer": "frontend", "kind": "file", "filePath": "NexusReader.UI.Shared/Layout/AuthLayout.razor", "sourcePath": "NexusReader.UI.Shared/Layout/AuthLayout.razor", "sourceLine": 1, "evidencePaths": [ "NexusReader.UI.Shared/Layout/AuthLayout.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Layout/AuthLayout.razor", "line": 1 } ] }, { "id": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "label": "AuthenticationHeaderHandler", "role": "handler", "layer": "infrastructure", "kind": "file", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "label": "SendAsync", "role": "handler", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 27 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27", "label": "Calls external dependency", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 27 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32", "label": "Detect auth endpoints", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 32, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 32 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_38_38", "label": "Trusted host guard", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 38, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 38 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45", "label": "Evaluates branch condition", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 45 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_47_47", "label": "Waits for async work", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 47 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_48_48", "label": "Attach Authorization header", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 48, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 48 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48", "label": "Evaluates branch condition", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 48, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 48 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55", "label": "Calls external dependency", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 55, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 55 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_55_55", "label": "Waits for async work", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 55, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 55 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58", "label": "Evaluates branch condition", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 58, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 58 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_60_60", "label": "Waits for async work", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 60, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 60 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_try_61_61", "label": "Begins protected execution", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 61, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 61 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_64_64", "label": "Waits for async work", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 64, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 64 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69", "label": "Detect token already refreshed by another request", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 69, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 69 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73", "label": "Falls back to alternate path", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 73, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 73 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_78_78", "label": "Waits for async work", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 78 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79", "label": "Evaluates branch condition", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 79 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_81_81", "label": "Waits for async work", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 81, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 81 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85", "label": "Falls back to alternate path", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 85, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 85 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_87_87", "label": "Waits for async work", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 87, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 87 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_91_91", "label": "Evaluates branch condition", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 91, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 91 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_93_93", "label": "Waits for async work", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 93, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 93 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_95_95", "label": "Calls external dependency", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 95, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 95 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_95_95", "label": "Returns result", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 95, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 95 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_95_95", "label": "Waits for async work", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 95, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 95 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_catch_98_98", "label": "Handles exception path", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 98, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 98 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_finally_103_103", "label": "Runs cleanup or finalization", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 103, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 103 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_109_109", "label": "Returns result", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 109, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 109 } ] }, { "id": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "label": "CloneHttpRequestMessageAsync", "role": "handler", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 112, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 112 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119", "label": "Copy content if present", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 119, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 119 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_await_122_122", "label": "Waits for async work", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 122, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 122 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_126_126", "label": "Copy content headers", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 126, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 126 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_132_132", "label": "Copy request headers", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 132, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 132 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_return_139_139", "label": "Returns result", "role": "handler", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 139, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 139 } ] }, { "id": "flow_type_nexusreader_web_client_handlers_authenticationheaderhandler_cs_authenticationheaderhandler_14", "label": "AuthenticationHeaderHandler", "role": "unknown", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 14, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 14 } ] }, { "id": "flow_file_nexusreader_ui_shared_pages_account_login_razor_file_1", "label": "Login", "role": "ui-page", "layer": "frontend", "kind": "file", "filePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 1, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 1 } ] }, { "id": "flow_method_nexusreader_ui_shared_pages_account_login_razor_oninitialized_110", "label": "OnInitialized", "role": "ui-page", "layer": "frontend", "kind": "method", "filePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 110, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 110 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_login_razor_oninitialized_guard_clause_112_112", "label": "Check for ErrorCode", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 112, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 112 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_login_razor_oninitialized_branch_112_112", "label": "Evaluates branch condition", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 112, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 112 } ] }, { "id": "flow_method_nexusreader_ui_shared_pages_account_login_razor_handlelogin_126", "label": "HandleLogin", "role": "ui-page", "layer": "frontend", "kind": "method", "filePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 126, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 126 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_try_131_131", "label": "Begins protected execution", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 131, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 131 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_await_133_133", "label": "Waits for async work", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 133, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 133 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_branch_134_134", "label": "Evaluates branch condition", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 134, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 134 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_await_137_137", "label": "Waits for async work", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 137, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 137 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_fallback_139_139", "label": "Falls back to alternate path", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 139, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 139 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_repository_read_141_141", "label": "Reads repository or persistence state", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 141, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 141 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_catch_144_144", "label": "Handles exception path", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 144, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 144 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_finally_148_148", "label": "Runs cleanup or finalization", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 148, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 148 } ] }, { "id": "flow_type_nexusreader_ui_shared_pages_account_login_razor_loginmodel_157", "label": "LoginModel", "role": "dto", "layer": "frontend", "kind": "type", "filePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 157, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 157 } ] }, { "id": "flow_file_nexusreader_ui_shared_pages_account_profile_razor_file_1", "label": "Profile.razor", "role": "ui-page", "layer": "frontend", "kind": "file", "filePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 1, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 1 } ] }, { "id": "flow_method_nexusreader_ui_shared_pages_account_profile_razor_render_markup_1", "label": "Render (markup)", "role": "ui-page", "layer": "frontend", "kind": "method", "filePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 1, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 1 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_guard_clause_14_14", "label": "Conditional UI branch for loading vs profile content", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 14, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 14 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_branch_14_14", "label": "Evaluates branch condition", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 14, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 14 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_fallback_21_21", "label": "Falls back to alternate path", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 21, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 21 } ] }, { "id": "flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1", "label": "NexusIcon", "role": "ui-component", "layer": "frontend", "kind": "file", "filePath": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourcePath": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourceLine": 1, "evidencePaths": [ "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "line": 1 } ] }, { "id": "flow_method_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_111", "label": "OnInitializedAsync", "role": "ui-page", "layer": "frontend", "kind": "method", "filePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 111, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 111 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_await_113_113", "label": "Waits for async work", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 113, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 113 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_guard_clause_114_114", "label": "Apply result only if successful", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 114, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 114 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_branch_114_114", "label": "Evaluates branch condition", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 114, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 114 } ] }, { "id": "flow_method_nexusreader_ui_shared_pages_account_profile_razor_calculateprogress_121", "label": "CalculateProgress", "role": "ui-page", "layer": "frontend", "kind": "method", "filePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 121, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 121 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_calculateprogress_guard_clause_123_123", "label": "Guard for missing profile or zero limit", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 123, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 123 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_calculateprogress_return_125_125", "label": "Returns result", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 125, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 125 } ] }, { "id": "flow_method_nexusreader_ui_shared_pages_account_profile_razor_handlelogout_133", "label": "HandleLogout", "role": "ui-page", "layer": "frontend", "kind": "method", "filePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 133, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 133 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_handlelogout_await_135_135", "label": "Waits for async work", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 135, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 135 } ] }, { "id": "flow_file_nexusreader_ui_shared_pages_account_register_razor_file_1", "label": "Register.razor", "role": "ui-page", "layer": "frontend", "kind": "file", "filePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 1, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 1 } ] }, { "id": "flow_method_nexusreader_ui_shared_pages_account_register_razor_handleregister_84", "label": "HandleRegister", "role": "ui-page", "layer": "frontend", "kind": "method", "filePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 84, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 84 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_try_89_89", "label": "Begins protected execution", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 89, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 89 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_91_91", "label": "Waits for async work", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 91, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 91 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_branch_92_92", "label": "Evaluates branch condition", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 92, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 92 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_94_94", "label": "Waits for async work", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 94, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 94 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_branch_95_95", "label": "Evaluates branch condition", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 95, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 95 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_98_98", "label": "Waits for async work", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 98, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 98 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_fallback_100_100", "label": "Falls back to alternate path", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 100, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 100 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_fallback_105_105", "label": "Falls back to alternate path", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 105, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 105 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_repository_read_107_107", "label": "Reads repository or persistence state", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 107, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 107 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_catch_110_110", "label": "Handles exception path", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 110, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 110 } ] }, { "id": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_finally_114_114", "label": "Runs cleanup or finalization", "role": "ui-page", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 114, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 114 } ] }, { "id": "flow_type_nexusreader_ui_shared_pages_account_register_razor_registermodel_120", "label": "RegisterModel", "role": "dto", "layer": "frontend", "kind": "type", "filePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourcePath": "NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 120, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 120 } ] }, { "id": "flow_file_nexusreader_application_abstractions_messaging_icommand_cs_file_1", "label": "ICommand.cs", "role": "handler", "layer": "application", "kind": "file", "filePath": "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "sourcePath": "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Application/Abstractions/Messaging/ICommand.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "line": 1 } ] }, { "id": "flow_type_nexusreader_application_abstractions_messaging_icommand_cs_icommand_6", "label": "ICommand", "role": "unknown", "layer": "application", "kind": "type", "filePath": "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "sourcePath": "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "sourceLine": 6, "evidencePaths": [ "NexusReader.Application/Abstractions/Messaging/ICommand.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "line": 6 } ] }, { "id": "flow_type_nexusreader_application_abstractions_messaging_icommand_cs_icommand_tresponse_10", "label": "ICommand", "role": "unknown", "layer": "application", "kind": "type", "filePath": "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "sourcePath": "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "sourceLine": 10, "evidencePaths": [ "NexusReader.Application/Abstractions/Messaging/ICommand.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "line": 10 } ] }, { "id": "flow_file_nexusreader_application_abstractions_messaging_icommandhandler_cs_file_1", "label": "ICommandHandler.cs", "role": "handler", "layer": "application", "kind": "file", "filePath": "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "sourcePath": "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "line": 1 } ] }, { "id": "flow_type_nexusreader_application_abstractions_messaging_icommandhandler_cs_icommandhandler_tcommand_6", "label": "ICommandHandler", "role": "unknown", "layer": "application", "kind": "type", "filePath": "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "sourcePath": "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "sourceLine": 6, "evidencePaths": [ "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "line": 6 } ] }, { "id": "flow_type_nexusreader_application_abstractions_messaging_icommandhandler_cs_icommandhandler_tcommand_tresponse_11", "label": "ICommandHandler", "role": "unknown", "layer": "application", "kind": "type", "filePath": "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "sourcePath": "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "sourceLine": 11, "evidencePaths": [ "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "line": 11 } ] }, { "id": "flow_file_nexusreader_application_abstractions_messaging_iquery_cs_file_1", "label": "IQuery", "role": "handler", "layer": "application", "kind": "file", "filePath": "NexusReader.Application/Abstractions/Messaging/IQuery.cs", "sourcePath": "NexusReader.Application/Abstractions/Messaging/IQuery.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Abstractions/Messaging/IQuery.cs", "line": 1 } ] }, { "id": "flow_type_nexusreader_application_abstractions_messaging_iquery_cs_iquery_tresponse_6", "label": "IQuery", "role": "unknown", "layer": "application", "kind": "type", "filePath": "NexusReader.Application/Abstractions/Messaging/IQuery.cs", "sourcePath": "NexusReader.Application/Abstractions/Messaging/IQuery.cs", "sourceLine": 6, "evidencePaths": [ "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Abstractions/Messaging/IQuery.cs", "line": 6 } ] }, { "id": "flow_method_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_1", "label": "Render (Razor template / component render)", "role": "ui-component", "layer": "frontend", "kind": "method", "filePath": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourcePath": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourceLine": 1, "evidencePaths": [ "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "line": 1 } ] }, { "id": "flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_switch_2_2", "label": "Branches across multiple outcomes", "role": "ui-component", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourcePath": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourceLine": 2, "evidencePaths": [ "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "line": 2 } ] }, { "id": "flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_branch_2_2", "label": "Switch on Name.ToLowerInvariant() to choose icon path(s)", "role": "ui-component", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourcePath": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourceLine": 2, "evidencePaths": [ "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "line": 2 } ] }, { "id": "flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_fallback_89_89", "label": "Default icon fallback", "role": "ui-component", "layer": "frontend", "kind": "action", "filePath": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourcePath": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourceLine": 89, "evidencePaths": [ "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "line": 89 } ] }, { "id": "flow_type_nexusreader_ui_shared_components_atoms_nexusicon_razor_nexusicon_component_parameters_96", "label": "NexusIcon (component parameters)", "role": "unknown", "layer": "frontend", "kind": "type", "filePath": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourcePath": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourceLine": 96, "evidencePaths": [ "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "line": 96 } ] } ], "edges": [ { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_invokes_12", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "kind": "handles-route", "label": "CreateMauiApp", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 12 } ] }, { "id": "edge_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_invokes_14", "from": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "kind": "invokes", "label": "Begins protected execution", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 14, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 14 } ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "kind": "returns", "label": "Build and return app", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 57 } ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 57 } ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_invokes_59", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "kind": "invokes", "label": "handled exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 59, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 59 } ] }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63_invokes_63", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 63, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 63 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines-type_10", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "kind": "defines-type", "label": "model MauiProgram", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 10 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers-service_28", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "kind": "registers-service", "label": "IPlatformService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 28 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers-service_29", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "kind": "registers-service", "label": "INativeStorageService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 29 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers-service_32", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "kind": "registers-service", "label": "NexusAuthenticationStateProvider", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 32 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33_registers-service_33", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "kind": "registers-service", "label": "AuthenticationStateProvider", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 33 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35_registers-service_35", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "kind": "registers-service", "label": "Authorization", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 35 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38_registers-service_38", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "kind": "registers-service", "label": "HttpClient", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 38 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41_registers-service_41", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "kind": "registers-service", "label": "IThemeService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 41 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42_registers-service_42", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "kind": "registers-service", "label": "IFocusModeService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 42 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43_registers-service_43", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "kind": "registers-service", "label": "IQuizStateService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 43 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44_registers-service_44", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "kind": "registers-service", "label": "IReaderNavigationService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 44 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_configures-pipeline_12", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "kind": "configures-pipeline", "label": "unknown", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 12 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_program_top_level_15_invokes_15", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_program_top_level_15", "kind": "handles-route", "label": "Program (top-level)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 15, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 15 } ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_program_top_level_15_flow_action_nexusreader_web_client_program_cs_program_top_level_await_59_59_invokes_59", "from": "flow_method_nexusreader_web_client_program_cs_program_top_level_15", "to": "flow_action_nexusreader_web_client_program_cs_program_top_level_await_59_59", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 59, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 59 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_createdbcontext_61_invokes_61", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_createdbcontext_61", "kind": "handles-route", "label": "CreateDbContext", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 61, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 61 } ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_createdbcontext_61_flow_action_nexusreader_web_client_program_cs_createdbcontext_throw_63_63_invokes_63", "from": "flow_method_nexusreader_web_client_program_cs_createdbcontext_61", "to": "flow_action_nexusreader_web_client_program_cs_createdbcontext_throw_63_63", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 63, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 63 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_generateasync_69_invokes_69", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_generateasync_69", "kind": "handles-route", "label": "GenerateAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 69, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 69 } ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_generateasync_69_flow_action_nexusreader_web_client_program_cs_generateasync_throw_70_70_invokes_70", "from": "flow_method_nexusreader_web_client_program_cs_generateasync_69", "to": "flow_action_nexusreader_web_client_program_cs_generateasync_throw_70_70", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 70, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 70 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_getservice_71_invokes_71", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_getservice_71", "kind": "handles-route", "label": "GetService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 71, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 71 } ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_getservice_71_flow_action_nexusreader_web_client_program_cs_getservice_return_71_71_returns_71", "from": "flow_method_nexusreader_web_client_program_cs_getservice_71", "to": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "kind": "returns", "label": "Return null", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 71, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 71 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_saveebookasync_byte_74_invokes_74", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_saveebookasync_byte_74", "kind": "handles-route", "label": "SaveEbookAsync (byte[])", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 74 } ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_saveebookasync_byte_74_flow_action_nexusreader_web_client_program_cs_saveebookasync_byte_throw_78_78_invokes_78", "from": "flow_method_nexusreader_web_client_program_cs_saveebookasync_byte_74", "to": "flow_action_nexusreader_web_client_program_cs_saveebookasync_byte_throw_78_78", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 78 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_saveebookasync_byte_throw_78_78_flow_action_nexusreader_web_client_program_cs_saveebookasync_byte_throw_79_79_invokes_79", "from": "flow_action_nexusreader_web_client_program_cs_saveebookasync_byte_throw_78_78", "to": "flow_action_nexusreader_web_client_program_cs_saveebookasync_byte_throw_79_79", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 79 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_saveebookasync_stream_74_invokes_74", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_saveebookasync_stream_74", "kind": "handles-route", "label": "SaveEbookAsync (Stream)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 74 } ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_saveebookasync_stream_74_flow_action_nexusreader_web_client_program_cs_saveebookasync_stream_throw_78_78_invokes_78", "from": "flow_method_nexusreader_web_client_program_cs_saveebookasync_stream_74", "to": "flow_action_nexusreader_web_client_program_cs_saveebookasync_stream_throw_78_78", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 78 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_saveebookasync_stream_throw_78_78_flow_action_nexusreader_web_client_program_cs_saveebookasync_stream_throw_79_79_invokes_79", "from": "flow_action_nexusreader_web_client_program_cs_saveebookasync_stream_throw_78_78", "to": "flow_action_nexusreader_web_client_program_cs_saveebookasync_stream_throw_79_79", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 79 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_saveebookasync_stream_throw_79_79_flow_action_nexusreader_web_client_program_cs_saveebookasync_stream_throw_80_80_invokes_80", "from": "flow_action_nexusreader_web_client_program_cs_saveebookasync_stream_throw_79_79", "to": "flow_action_nexusreader_web_client_program_cs_saveebookasync_stream_throw_80_80", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 80, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 80 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_savecoverasync_byte_74_invokes_74", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_savecoverasync_byte_74", "kind": "handles-route", "label": "SaveCoverAsync (byte[])", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 74 } ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_savecoverasync_byte_74_flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_78_78_invokes_78", "from": "flow_method_nexusreader_web_client_program_cs_savecoverasync_byte_74", "to": "flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_78_78", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 78 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_78_78_flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_79_79_invokes_79", "from": "flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_78_78", "to": "flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_79_79", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 79 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_79_79_flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_80_80_invokes_80", "from": "flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_79_79", "to": "flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_80_80", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 80, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 80 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_80_80_flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_81_81_invokes_81", "from": "flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_80_80", "to": "flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_81_81", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 81, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 81 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_savecoverasync_stream_74_invokes_74", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_savecoverasync_stream_74", "kind": "handles-route", "label": "SaveCoverAsync (Stream)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 74 } ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_savecoverasync_stream_74_flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_78_78_invokes_78", "from": "flow_method_nexusreader_web_client_program_cs_savecoverasync_stream_74", "to": "flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_78_78", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 78 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_78_78_flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_79_79_invokes_79", "from": "flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_78_78", "to": "flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_79_79", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 79 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_79_79_flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_80_80_invokes_80", "from": "flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_79_79", "to": "flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_80_80", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 80, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 80 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_80_80_flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_81_81_invokes_81", "from": "flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_80_80", "to": "flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_81_81", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 81, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 81 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_84_invokes_84", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_84", "kind": "handles-route", "label": "FindAuthorByNameAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 84 } ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_84_flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88_invokes_88", "from": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_84", "to": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88_flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_throw_88_88_invokes_88", "from": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "to": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_throw_88_88", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_throw_88_88_flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_throw_89_89_invokes_89", "from": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_throw_88_88", "to": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_throw_89_89", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 89, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 89 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_addauthor_84_invokes_84", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_addauthor_84", "kind": "handles-route", "label": "AddAuthor", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 84 } ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_addauthor_84_flow_action_nexusreader_web_client_program_cs_addauthor_repository_read_88_88_invokes_88", "from": "flow_method_nexusreader_web_client_program_cs_addauthor_84", "to": "flow_action_nexusreader_web_client_program_cs_addauthor_repository_read_88_88", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_addauthor_repository_read_88_88_flow_action_nexusreader_web_client_program_cs_addauthor_throw_88_88_invokes_88", "from": "flow_action_nexusreader_web_client_program_cs_addauthor_repository_read_88_88", "to": "flow_action_nexusreader_web_client_program_cs_addauthor_throw_88_88", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_addauthor_throw_88_88_flow_action_nexusreader_web_client_program_cs_addauthor_throw_89_89_invokes_89", "from": "flow_action_nexusreader_web_client_program_cs_addauthor_throw_88_88", "to": "flow_action_nexusreader_web_client_program_cs_addauthor_throw_89_89", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 89, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 89 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_addauthor_throw_89_89_flow_action_nexusreader_web_client_program_cs_addauthor_throw_90_90_invokes_90", "from": "flow_action_nexusreader_web_client_program_cs_addauthor_throw_89_89", "to": "flow_action_nexusreader_web_client_program_cs_addauthor_throw_90_90", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 90, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 90 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_addebook_84_invokes_84", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_addebook_84", "kind": "handles-route", "label": "AddEbook", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 84 } ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_addebook_84_flow_action_nexusreader_web_client_program_cs_addebook_repository_read_88_88_invokes_88", "from": "flow_method_nexusreader_web_client_program_cs_addebook_84", "to": "flow_action_nexusreader_web_client_program_cs_addebook_repository_read_88_88", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_addebook_repository_read_88_88_flow_action_nexusreader_web_client_program_cs_addebook_throw_88_88_invokes_88", "from": "flow_action_nexusreader_web_client_program_cs_addebook_repository_read_88_88", "to": "flow_action_nexusreader_web_client_program_cs_addebook_throw_88_88", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_addebook_throw_88_88_flow_action_nexusreader_web_client_program_cs_addebook_throw_89_89_invokes_89", "from": "flow_action_nexusreader_web_client_program_cs_addebook_throw_88_88", "to": "flow_action_nexusreader_web_client_program_cs_addebook_throw_89_89", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 89, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 89 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_addebook_throw_89_89_flow_action_nexusreader_web_client_program_cs_addebook_throw_90_90_invokes_90", "from": "flow_action_nexusreader_web_client_program_cs_addebook_throw_89_89", "to": "flow_action_nexusreader_web_client_program_cs_addebook_throw_90_90", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 90, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 90 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_addebook_throw_90_90_flow_action_nexusreader_web_client_program_cs_addebook_throw_91_91_invokes_91", "from": "flow_action_nexusreader_web_client_program_cs_addebook_throw_90_90", "to": "flow_action_nexusreader_web_client_program_cs_addebook_throw_91_91", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 91, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 91 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_savechangesasync_84_invokes_84", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_savechangesasync_84", "kind": "handles-route", "label": "SaveChangesAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 84 } ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_savechangesasync_84_flow_action_nexusreader_web_client_program_cs_savechangesasync_repository_read_88_88_invokes_88", "from": "flow_method_nexusreader_web_client_program_cs_savechangesasync_84", "to": "flow_action_nexusreader_web_client_program_cs_savechangesasync_repository_read_88_88", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_savechangesasync_repository_read_88_88_flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_88_88_invokes_88", "from": "flow_action_nexusreader_web_client_program_cs_savechangesasync_repository_read_88_88", "to": "flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_88_88", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_88_88_flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_89_89_invokes_89", "from": "flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_88_88", "to": "flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_89_89", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 89, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 89 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_89_89_flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_90_90_invokes_90", "from": "flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_89_89", "to": "flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_90_90", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 90, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 90 } ] }, { "id": "edge_flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_90_90_flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_91_91_invokes_91", "from": "flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_90_90", "to": "flow_action_nexusreader_web_client_program_cs_savechangesasync_throw_91_91", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 91, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 91 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61_defines-type_61", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "kind": "defines-type", "label": "model ThrowingDbContextFactory", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 61, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 61 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66_defines-type_66", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "kind": "defines-type", "label": "model ThrowingEmbeddingGenerator", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 66, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 66 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74_defines-type_74", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "kind": "defines-type", "label": "model ThrowingBookStorageService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 74 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84_defines-type_84", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "kind": "defines-type", "label": "model ThrowingEbookRepository", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 84 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94_defines-type_94", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "kind": "defines-type", "label": "model ThrowingSyncBroadcaster", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 94, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 94 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers-service_18", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "kind": "registers-service", "label": "IPlatformService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 18, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 18 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webstorageservice_19_registers-service_19", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webstorageservice_19", "kind": "registers-service", "label": "INativeStorageService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 19, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 19 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_identityservice_32_registers-service_32", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_identityservice_32", "kind": "registers-service", "label": "IIdentityService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 32, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 32 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusreader_web_client_handlers_authenticationheaderhandler_40_registers-service_40", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_nexusreader_web_client_handlers_authenticationheaderhandler_40", "kind": "registers-service", "label": "NexusReader.Web.Client.Handlers.AuthenticationHeaderHandler", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 40, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 40 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49_registers-service_49", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "kind": "registers-service", "label": "IDbContextFactory", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 49, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 49 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusreader_application_extension_55_registers-service_55", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_nexusreader_application_extension_55", "kind": "registers-service", "label": "IServiceCollection (application extension)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 55, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 55 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_buildandrun_59_configures-pipeline_59", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_buildandrun_59", "kind": "configures-pipeline", "label": "middleware", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 59, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 59 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_program_top_level_29_invokes_29", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_program_top_level_29", "kind": "handles-route", "label": "Program (top-level)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 29, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 29 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates-condition_62", "from": "flow_method_nexusreader_web_program_cs_program_top_level_29", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 62, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 62 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls-back_66", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 66 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_invokes_125", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 125, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 125 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_invokes_126", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 126, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 126 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_invokes_127", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 127, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 127 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129_evaluates-condition_129", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 129, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 129 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_131_131_invokes_131", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_131_131", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 131, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 131 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_131_131_flow_action_nexusreader_web_program_cs_program_top_level_fallback_133_133_falls-back_133", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_131_131", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_133_133", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 133, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 133 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_133_133_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_135_135_invokes_135", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_133_133", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_135_135", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 135, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 135 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_135_135_flow_action_nexusreader_web_program_cs_program_top_level_return_137_137_returns_137", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_135_135", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_137_137", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 137, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 137 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_137_137_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_166_166_evaluates-condition_166", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_137_137", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_166_166", "kind": "evaluates-condition", "label": "throw / continue", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 166, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 166 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_166_166_flow_action_nexusreader_web_program_cs_program_top_level_branch_169_169_evaluates-condition_169", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_166_166", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_169_169", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 169, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 169 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_169_169_flow_action_nexusreader_web_program_cs_program_top_level_throw_171_171_invokes_171", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_169_169", "to": "flow_action_nexusreader_web_program_cs_program_top_level_throw_171_171", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 171, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 171 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_throw_171_171_flow_action_nexusreader_web_program_cs_program_top_level_validation_171_171_evaluates-condition_171", "from": "flow_action_nexusreader_web_program_cs_program_top_level_throw_171_171", "to": "flow_action_nexusreader_web_program_cs_program_top_level_validation_171_171", "kind": "evaluates-condition", "label": "Validates input or state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 171, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 171 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_validation_171_171_flow_action_nexusreader_web_program_cs_program_top_level_await_181_181_invokes_181", "from": "flow_action_nexusreader_web_program_cs_program_top_level_validation_171_171", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_181_181", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 181, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 181 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_181_181_flow_action_nexusreader_web_program_cs_program_top_level_loop_186_186_loops-to_186", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_181_181", "to": "flow_action_nexusreader_web_program_cs_program_top_level_loop_186_186", "kind": "loops-to", "label": "int i = 0; i < maxRetries; i++", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 186, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 186 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_loop_186_186_flow_action_nexusreader_web_program_cs_program_top_level_try_188_188_invokes_188", "from": "flow_action_nexusreader_web_program_cs_program_top_level_loop_186_186", "to": "flow_action_nexusreader_web_program_cs_program_top_level_try_188_188", "kind": "invokes", "label": "Begins protected execution", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 188, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 188 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_try_188_188_flow_action_nexusreader_web_program_cs_program_top_level_branch_190_190_evaluates-condition_190", "from": "flow_action_nexusreader_web_program_cs_program_top_level_try_188_188", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_190_190", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 190, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 190 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_190_190_flow_action_nexusreader_web_program_cs_program_top_level_await_195_195_invokes_195", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_190_190", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_195_195", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 195, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 195 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_195_195_flow_action_nexusreader_web_program_cs_program_top_level_await_196_196_invokes_196", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_195_195", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_196_196", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 196, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 196 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_196_196_flow_action_nexusreader_web_program_cs_program_top_level_branch_198_198_evaluates-condition_198", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_196_196", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_198_198", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 198, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 198 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_198_198_flow_action_nexusreader_web_program_cs_program_top_level_catch_204_204_invokes_204", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_198_198", "to": "flow_action_nexusreader_web_program_cs_program_top_level_catch_204_204", "kind": "invokes", "label": "handled exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 204, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 204 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_catch_204_204_flow_action_nexusreader_web_program_cs_program_top_level_branch_206_206_evaluates-condition_206", "from": "flow_action_nexusreader_web_program_cs_program_top_level_catch_204_204", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_206_206", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 206, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 206 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_206_206_flow_action_nexusreader_web_program_cs_program_top_level_log_206_206_invokes_206", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_206_206", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_206_206", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 206, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 206 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_206_206_flow_action_nexusreader_web_program_cs_program_top_level_log_208_208_invokes_208", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_206_206", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_208_208", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 208, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 208 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_208_208_flow_action_nexusreader_web_program_cs_program_top_level_await_211_211_invokes_211", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_208_208", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_211_211", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 211, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 211 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_211_211_flow_action_nexusreader_web_program_cs_program_top_level_catch_214_214_invokes_214", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_211_211", "to": "flow_action_nexusreader_web_program_cs_program_top_level_catch_214_214", "kind": "invokes", "label": "handled exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 214, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 214 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_catch_214_214_flow_action_nexusreader_web_program_cs_program_top_level_branch_216_216_evaluates-condition_216", "from": "flow_action_nexusreader_web_program_cs_program_top_level_catch_214_214", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_216_216", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 216, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 216 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_216_216_flow_action_nexusreader_web_program_cs_program_top_level_log_216_216_invokes_216", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_216_216", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_216_216", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 216, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 216 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_216_216_flow_action_nexusreader_web_program_cs_program_top_level_log_218_218_invokes_218", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_216_216", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_218_218", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 218, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 218 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_218_218_flow_action_nexusreader_web_program_cs_program_top_level_throw_220_220_invokes_220", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_218_218", "to": "flow_action_nexusreader_web_program_cs_program_top_level_throw_220_220", "kind": "invokes", "label": "Throws exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 220, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 220 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_throw_220_220_flow_action_nexusreader_web_program_cs_program_top_level_branch_226_226_evaluates-condition_226", "from": "flow_action_nexusreader_web_program_cs_program_top_level_throw_220_220", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_226_226", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 226, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 226 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_226_226_flow_action_nexusreader_web_program_cs_program_top_level_fallback_230_230_falls-back_230", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_226_226", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_230_230", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 230, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 230 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_230_230_flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237_evaluates-condition_237", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_230_230", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 237, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 237 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_252_252_invokes_252", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_252_252", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 252, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 252 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_252_252_flow_action_nexusreader_web_program_cs_program_top_level_await_253_253_invokes_253", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_252_252", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_253_253", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 253, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 253 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_253_253_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_255_255_evaluates-condition_255", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_253_253", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_255_255", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 255, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 255 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_255_255_flow_action_nexusreader_web_program_cs_program_top_level_return_258_258_returns_258", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_255_255", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_258_258", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 258, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 258 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_258_258_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_267_267_invokes_267", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_258_258", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_267_267", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 267, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 267 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_267_267_flow_action_nexusreader_web_program_cs_program_top_level_await_268_268_invokes_268", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_267_267", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_268_268", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 268, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 268 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_268_268_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_269_269_evaluates-condition_269", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_268_268", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_269_269", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 269, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 269 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_269_269_flow_action_nexusreader_web_program_cs_program_top_level_return_270_270_returns_270", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_269_269", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_270_270", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 270, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 270 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_270_270_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_275_275_invokes_275", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_270_270", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_275_275", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 275, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 275 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_275_275_flow_action_nexusreader_web_program_cs_program_top_level_await_276_276_invokes_276", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_275_275", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_276_276", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 276, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 276 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_276_276_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_277_277_evaluates-condition_277", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_276_276", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_277_277", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 277, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 277 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_277_277_flow_action_nexusreader_web_program_cs_program_top_level_return_278_278_returns_278", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_277_277", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_278_278", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 278, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 278 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_278_278_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_283_283_invokes_283", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_278_278", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_283_283", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 283, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 283 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_283_283_flow_action_nexusreader_web_program_cs_program_top_level_await_284_284_invokes_284", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_283_283", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_284_284", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 284, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 284 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_284_284_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_285_285_evaluates-condition_285", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_284_284", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_285_285", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 285, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 285 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_285_285_flow_action_nexusreader_web_program_cs_program_top_level_return_286_286_returns_286", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_285_285", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_286_286", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 286, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 286 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_286_286_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_291_291_invokes_291", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_286_286", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_291_291", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 291, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 291 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_291_291_flow_action_nexusreader_web_program_cs_program_top_level_await_292_292_invokes_292", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_291_291", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_292_292", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 292, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 292 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_292_292_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_293_293_evaluates-condition_293", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_292_292", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_293_293", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 293, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 293 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_293_293_flow_action_nexusreader_web_program_cs_program_top_level_return_294_294_returns_294", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_293_293", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_294_294", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 294, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 294 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_294_294_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_299_299_invokes_299", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_294_294", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_299_299", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 299, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 299 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_299_299_flow_action_nexusreader_web_program_cs_program_top_level_await_300_300_invokes_300", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_299_299", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_300_300", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 300, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 300 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_300_300_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_301_301_evaluates-condition_301", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_300_300", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_301_301", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 301, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 301 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_301_301_flow_action_nexusreader_web_program_cs_program_top_level_return_302_302_returns_302", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_301_301", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_302_302", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 302, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 302 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_302_302_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_307_307_invokes_307", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_302_302", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_307_307", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 307, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 307 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_307_307_flow_action_nexusreader_web_program_cs_program_top_level_await_308_308_invokes_308", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_307_307", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_308_308", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 308, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 308 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_308_308_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_309_309_evaluates-condition_309", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_308_308", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_309_309", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 309, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 309 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_309_309_flow_action_nexusreader_web_program_cs_program_top_level_return_310_310_returns_310", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_309_309", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_310_310", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 310, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 310 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_310_310_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_315_315_invokes_315", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_310_310", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_315_315", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 315, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 315 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_315_315_flow_action_nexusreader_web_program_cs_program_top_level_await_316_316_invokes_316", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_315_315", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_316_316", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 316, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 316 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_316_316_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_317_317_evaluates-condition_317", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_316_316", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_317_317", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 317, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 317 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_317_317_flow_action_nexusreader_web_program_cs_program_top_level_return_318_318_returns_318", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_317_317", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_318_318", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 318, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 318 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_318_318_flow_action_nexusreader_web_program_cs_program_top_level_await_323_323_invokes_323", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_318_318", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_323_323", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 323, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 323 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_323_323_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_324_324_evaluates-condition_324", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_323_323", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_324_324", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 324, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 324 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_324_324_flow_action_nexusreader_web_program_cs_program_top_level_return_327_327_returns_327", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_324_324", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_327_327", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 327, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 327 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_327_327_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_332_332_invokes_332", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_327_327", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_332_332", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 332, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 332 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_332_332_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_333_333_evaluates-condition_333", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_332_332", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_333_333", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 333, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 333 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_333_333_flow_action_nexusreader_web_program_cs_program_top_level_await_349_349_invokes_349", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_333_333", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_349_349", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 349, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 349 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_349_349_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_350_350_evaluates-condition_350", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_349_349", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_350_350", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 350, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 350 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_350_350_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_352_352_invokes_352", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_350_350", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_352_352", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 352, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 352 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_352_352_flow_action_nexusreader_web_program_cs_program_top_level_return_352_352_returns_352", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_352_352", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_352_352", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 352, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 352 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_352_352_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_357_357_invokes_357", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_352_352", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_357_357", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 357, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 357 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_357_357_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_358_358_evaluates-condition_358", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_357_357", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_358_358", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 358, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 358 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_358_358_flow_action_nexusreader_web_program_cs_program_top_level_await_360_360_invokes_360", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_358_358", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_360_360", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 360, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 360 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_360_360_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_361_361_evaluates-condition_361", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_360_360", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_361_361", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 361, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 361 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_361_361_flow_action_nexusreader_web_program_cs_program_top_level_return_364_364_returns_364", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_361_361", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_364_364", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 364, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 364 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_364_364_flow_action_nexusreader_web_program_cs_program_top_level_await_373_373_invokes_373", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_364_364", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_373_373", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 373, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 373 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_373_373_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_374_374_invokes_374", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_373_373", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_374_374", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 374, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 374 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_374_374_flow_action_nexusreader_web_program_cs_program_top_level_await_374_374_invokes_374", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_374_374", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_374_374", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 374, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 374 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_374_374_flow_action_nexusreader_web_program_cs_program_top_level_try_377_377_invokes_377", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_374_374", "to": "flow_action_nexusreader_web_program_cs_program_top_level_try_377_377", "kind": "invokes", "label": "Begins protected execution", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 377, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 377 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_try_377_377_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_381_381_invokes_381", "from": "flow_action_nexusreader_web_program_cs_program_top_level_try_377_377", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_381_381", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 381, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 381 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_381_381_flow_action_nexusreader_web_program_cs_program_top_level_switch_385_385_evaluates-condition_385", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_381_381", "to": "flow_action_nexusreader_web_program_cs_program_top_level_switch_385_385", "kind": "evaluates-condition", "label": "stripeEvent.Type", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 385, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 385 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_switch_385_385_flow_action_nexusreader_web_program_cs_program_top_level_await_389_389_invokes_389", "from": "flow_action_nexusreader_web_program_cs_program_top_level_switch_385_385", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_389_389", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 389, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 389 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_389_389_flow_action_nexusreader_web_program_cs_program_top_level_await_394_394_invokes_394", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_389_389", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_394_394", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 394, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 394 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_394_394_flow_action_nexusreader_web_program_cs_program_top_level_await_399_399_invokes_399", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_394_394", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_399_399", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 399, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 399 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_399_399_flow_action_nexusreader_web_program_cs_program_top_level_return_402_402_returns_402", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_399_399", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_402_402", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 402, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 402 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_402_402_flow_action_nexusreader_web_program_cs_program_top_level_catch_404_404_invokes_404", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_402_402", "to": "flow_action_nexusreader_web_program_cs_program_top_level_catch_404_404", "kind": "invokes", "label": "handled exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 404, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 404 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_catch_404_404_flow_action_nexusreader_web_program_cs_program_top_level_return_406_406_returns_406", "from": "flow_action_nexusreader_web_program_cs_program_top_level_catch_404_404", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_406_406", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 406, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 406 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_406_406_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_416_416_evaluates-condition_416", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_406_406", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_416_416", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 416, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 416 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_416_416_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_418_418_invokes_418", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_416_416", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_418_418", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 418, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 418 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_418_418_flow_action_nexusreader_web_program_cs_program_top_level_await_418_418_invokes_418", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_418_418", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_418_418", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 418, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 418 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_418_418_flow_action_nexusreader_web_program_cs_program_top_level_branch_419_419_evaluates-condition_419", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_418_418", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_419_419", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 419, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 419 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_419_419_flow_action_nexusreader_web_program_cs_program_top_level_await_422_422_invokes_422", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_419_419", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_422_422", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 422, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 422 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_422_422_flow_action_nexusreader_web_program_cs_program_top_level_branch_424_424_evaluates-condition_424", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_422_422", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_424_424", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 424, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 424 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_424_424_flow_action_nexusreader_web_program_cs_program_top_level_await_430_430_invokes_430", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_424_424", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_430_430", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 430, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 430 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_430_430_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_439_439_evaluates-condition_439", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_430_430", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_439_439", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 439, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 439 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_439_439_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_441_441_invokes_441", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_439_439", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_441_441", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 441, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 441 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_441_441_flow_action_nexusreader_web_program_cs_program_top_level_await_441_441_invokes_441", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_441_441", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_441_441", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 441, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 441 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_441_441_flow_action_nexusreader_web_program_cs_program_top_level_branch_442_442_evaluates-condition_442", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_441_441", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_442_442", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 442, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 442 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_442_442_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_444_444_invokes_444", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_442_442", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_444_444", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 444, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 444 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_444_444_flow_action_nexusreader_web_program_cs_program_top_level_await_444_444_invokes_444", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_444_444", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_444_444", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 444, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 444 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_444_444_flow_action_nexusreader_web_program_cs_program_top_level_await_447_447_invokes_447", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_444_444", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_447_447", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 447, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 447 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_447_447_flow_action_nexusreader_web_program_cs_program_top_level_return_460_460_returns_460", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_447_447", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_460_460", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 460, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 460 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_460_460_flow_action_nexusreader_web_program_cs_program_top_level_await_469_469_invokes_469", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_460_460", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_469_469", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 469, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 469 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_469_469_flow_action_nexusreader_web_program_cs_program_top_level_branch_470_470_evaluates-condition_470", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_469_469", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_470_470", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 470, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 470 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_470_470_flow_action_nexusreader_web_program_cs_program_top_level_log_472_472_invokes_472", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_470_470", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_472_472", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 472, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 472 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_472_472_flow_action_nexusreader_web_program_cs_program_top_level_return_473_473_returns_473", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_472_472", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_473_473", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 473, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 473 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_473_473_flow_action_nexusreader_web_program_cs_program_top_level_await_476_476_invokes_476", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_473_473", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_476_476", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 476, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 476 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_476_476_flow_action_nexusreader_web_program_cs_program_top_level_branch_477_477_evaluates-condition_477", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_476_476", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_477_477", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 477, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 477 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_477_477_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_479_479_invokes_479", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_477_477", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_479_479", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 479, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 479 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_479_479_flow_action_nexusreader_web_program_cs_program_top_level_return_480_480_returns_480", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_479_479", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_480_480", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 480, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 480 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_480_480_flow_action_nexusreader_web_program_cs_program_top_level_branch_483_483_evaluates-condition_483", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_480_480", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_483_483", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 483, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 483 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_483_483_flow_action_nexusreader_web_program_cs_program_top_level_log_485_485_invokes_485", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_483_483", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_485_485", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 485, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 485 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_485_485_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_485_485_invokes_485", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_485_485", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_485_485", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 485, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 485 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_485_485_flow_action_nexusreader_web_program_cs_program_top_level_return_486_486_returns_486", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_485_485", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_486_486", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 486, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 486 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_486_486_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_490_490_invokes_490", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_486_486", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_490_490", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 490, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 490 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_490_490_flow_action_nexusreader_web_program_cs_program_top_level_branch_491_491_evaluates-condition_491", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_490_490", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_491_491", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 491, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 491 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_491_491_flow_action_nexusreader_web_program_cs_program_top_level_await_494_494_invokes_494", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_491_491", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_494_494", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 494, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 494 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_494_494_flow_action_nexusreader_web_program_cs_program_top_level_branch_496_496_evaluates-condition_496", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_494_494", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_496_496", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 496, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 496 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_496_496_flow_action_nexusreader_web_program_cs_program_top_level_await_498_498_invokes_498", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_496_496", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_498_498", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 498, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 498 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_498_498_flow_action_nexusreader_web_program_cs_program_top_level_await_499_499_invokes_499", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_498_498", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_499_499", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 499, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 499 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_499_499_flow_action_nexusreader_web_program_cs_program_top_level_return_501_501_returns_501", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_499_499", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_501_501", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 501, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 501 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_501_501_flow_action_nexusreader_web_program_cs_program_top_level_loop_505_505_loops-to_505", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_501_501", "to": "flow_action_nexusreader_web_program_cs_program_top_level_loop_505_505", "kind": "loops-to", "label": "var error in createResult.Errors", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 505, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 505 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_loop_505_505_flow_action_nexusreader_web_program_cs_program_top_level_log_507_507_invokes_507", "from": "flow_action_nexusreader_web_program_cs_program_top_level_loop_505_505", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_507_507", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 507, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 507 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_507_507_flow_action_nexusreader_web_program_cs_program_top_level_branch_510_510_evaluates-condition_510", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_507_507", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_510_510", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 510, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 510 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_510_510_flow_action_nexusreader_web_program_cs_program_top_level_return_512_512_returns_512", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_510_510", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_512_512", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 512, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 512 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_512_512_flow_action_nexusreader_web_program_cs_program_top_level_log_516_516_invokes_516", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_512_512", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_516_516", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 516, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 516 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_516_516_flow_action_nexusreader_web_program_cs_program_top_level_return_517_517_returns_517", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_516_516", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_517_517", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 517, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 517 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_517_517_flow_action_nexusreader_web_program_cs_program_top_level_await_528_528_invokes_528", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_517_517", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_528_528", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 528, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 528 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_528_528_flow_action_nexusreader_web_program_cs_program_top_level_branch_529_529_evaluates-condition_529", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_528_528", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_529_529", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 529, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 529 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_529_529_flow_action_nexusreader_web_program_cs_program_top_level_return_532_532_returns_532", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_529_529", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_532_532", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 532, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 532 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_532_532_flow_action_nexusreader_web_program_cs_program_top_level_return_536_536_returns_536", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_532_532", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_536_536", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 536, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 536 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_536_536_flow_action_nexusreader_web_program_cs_program_top_level_await_543_543_invokes_543", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_536_536", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_543_543", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 543, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 543 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_543_543_flow_action_nexusreader_web_program_cs_program_top_level_return_545_545_returns_545", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_543_543", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_545_545", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 545, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 545 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_545_545_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_550_550_invokes_550", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_545_545", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_550_550", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 550, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 550 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_550_550_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_551_551_evaluates-condition_551", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_550_550", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_551_551", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 551, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 551 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_551_551_flow_action_nexusreader_web_program_cs_program_top_level_await_553_553_invokes_553", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_551_551", "to": "flow_action_nexusreader_web_program_cs_program_top_level_await_553_553", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 553, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 553 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_await_553_553_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_554_554_evaluates-condition_554", "from": "flow_action_nexusreader_web_program_cs_program_top_level_await_553_553", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_554_554", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 554, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 554 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_554_554_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_554_554_invokes_554", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_554_554", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_554_554", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 554, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 554 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_554_554_flow_action_nexusreader_web_program_cs_program_top_level_return_556_556_returns_556", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_554_554", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_556_556", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 556, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 556 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250_invokes_250", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250", "kind": "handles-route", "label": "GetEpubContent (GET /api/epub/{ebookId}/{index})", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 250, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 250 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250_flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_252_252_evaluates-condition_252", "from": "flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250", "to": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_252_252", "kind": "evaluates-condition", "label": "continue", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 252, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 252 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_252_252_flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_repository_read_252_252_invokes_252", "from": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_252_252", "to": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_repository_read_252_252", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 252, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 252 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_repository_read_252_252_flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_await_253_253_invokes_253", "from": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_repository_read_252_252", "to": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_await_253_253", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 253, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 253 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_await_253_253_flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_255_evaluates-condition_255", "from": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_await_253_253", "to": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_255", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 255, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 255 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_255_flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_branch_255_255_evaluates-condition_255", "from": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_255", "to": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_branch_255_255", "kind": "evaluates-condition", "label": "Return OK or BadRequest based on result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 255, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 255 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_branch_255_255_flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_return_258_258_returns_258", "from": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_branch_255_255", "to": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_return_258_258", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 258, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 258 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledge_api_group_mappings_261_invokes_261", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_knowledge_api_group_mappings_261", "kind": "handles-route", "label": "Knowledge API group mappings", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 261, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 261 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_knowledge_api_group_mappings_261_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_267_267_invokes_267", "from": "flow_method_nexusreader_web_program_cs_knowledge_api_group_mappings_261", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_267_267", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 267, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 267 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_267_267_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_267_267_evaluates-condition_267", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_267_267", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_267_267", "kind": "evaluates-condition", "label": "use claim / fallback 'global'", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 267, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 267 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_267_267_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_268_268_invokes_268", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_267_267", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_268_268", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 268, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 268 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_268_268_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_269_269_evaluates-condition_269", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_268_268", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_269_269", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 269, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 269 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_269_269_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_branch_269_269_evaluates-condition_269", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_269_269", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_branch_269_269", "kind": "evaluates-condition", "label": "Return OK or BadRequest on service result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 269, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 269 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_branch_269_269_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_270_270_returns_270", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_branch_269_269", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_270_270", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 270, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 270 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_270_270_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_275_275_invokes_275", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_270_270", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_275_275", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 275, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 275 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_275_275_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_276_276_invokes_276", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_275_275", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_276_276", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 276, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 276 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_276_276_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_277_277_evaluates-condition_277", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_276_276", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_277_277", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 277, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 277 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_277_277_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_278_278_returns_278", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_277_277", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_278_278", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 278, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 278 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_278_278_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_283_283_invokes_283", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_278_278", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_283_283", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 283, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 283 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_283_283_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_284_284_invokes_284", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_283_283", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_284_284", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 284, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 284 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_284_284_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_285_285_evaluates-condition_285", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_284_284", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_285_285", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 285, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 285 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_285_285_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_286_286_returns_286", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_285_285", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_286_286", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 286, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 286 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_286_286_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_291_291_invokes_291", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_286_286", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_291_291", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 291, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 291 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_291_291_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_292_292_invokes_292", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_291_291", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_292_292", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 292, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 292 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_292_292_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_293_293_evaluates-condition_293", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_292_292", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_293_293", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 293, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 293 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_293_293_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_294_294_returns_294", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_293_293", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_294_294", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 294, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 294 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_294_294_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_299_299_invokes_299", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_294_294", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_299_299", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 299, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 299 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_299_299_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_300_300_invokes_300", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_299_299", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_300_300", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 300, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 300 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_300_300_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_301_301_evaluates-condition_301", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_300_300", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_301_301", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 301, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 301 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_301_301_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_302_302_returns_302", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_301_301", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_302_302", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 302, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 302 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_302_302_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_307_307_invokes_307", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_302_302", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_307_307", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 307, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 307 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_307_307_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_308_308_invokes_308", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_307_307", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_308_308", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 308, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 308 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_308_308_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_309_309_evaluates-condition_309", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_308_308", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_309_309", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 309, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 309 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_309_309_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_310_310_returns_310", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_309_309", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_310_310", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 310, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 310 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_310_310_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_315_315_invokes_315", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_310_310", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_315_315", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 315, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 315 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_315_315_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_316_316_invokes_316", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_315_315", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_316_316", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 316, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 316 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_316_316_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_317_317_evaluates-condition_317", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_316_316", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_317_317", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 317, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 317 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_317_317_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_318_318_returns_318", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_317_317", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_318_318", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 318, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 318 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_318_318_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_323_323_invokes_323", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_318_318", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_323_323", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 323, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 323 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_323_323_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_324_324_evaluates-condition_324", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_await_323_323", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_324_324", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 324, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 324 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_324_324_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_327_327_returns_327", "from": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_guard_clause_324_324", "to": "flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_return_327_327", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 327, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 327 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_330_invokes_330", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_330", "kind": "handles-route", "label": "IngestEbook (POST /api/library/ingest)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 330, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 330 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_330_flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_332_332_evaluates-condition_332", "from": "flow_method_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_330", "to": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_332_332", "kind": "evaluates-condition", "label": "Unauthorized / continue", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 332, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 332 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_332_332_flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_repository_read_332_332_invokes_332", "from": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_332_332", "to": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_repository_read_332_332", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 332, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 332 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_repository_read_332_332_flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_333_333_evaluates-condition_333", "from": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_repository_read_332_332", "to": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_333_333", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 333, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 333 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_333_333_flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_await_349_349_invokes_349", "from": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_333_333", "to": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_await_349_349", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 349, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 349 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_await_349_349_flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_350_350_evaluates-condition_350", "from": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_await_349_349", "to": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_350_350", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 350, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 350 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_350_350_flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_repository_read_352_352_invokes_352", "from": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_350_350", "to": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_repository_read_352_352", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 352, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 352 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_repository_read_352_352_flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_return_352_352_returns_352", "from": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_repository_read_352_352", "to": "flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_return_352_352", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 352, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 352 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355_invokes_355", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355", "kind": "handles-route", "label": "GetMyEbooks (GET /api/library/books)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 355, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 355 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_357_357_evaluates-condition_357", "from": "flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355", "to": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_357_357", "kind": "evaluates-condition", "label": "Unauthorized / continue", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 357, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 357 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_357_357_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_repository_read_357_357_invokes_357", "from": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_357_357", "to": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_repository_read_357_357", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 357, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 357 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_repository_read_357_357_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_358_358_evaluates-condition_358", "from": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_repository_read_357_357", "to": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_358_358", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 358, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 358 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_358_358_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_await_360_360_invokes_360", "from": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_358_358", "to": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_await_360_360", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 360, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 360 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_await_360_360_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_361_361_evaluates-condition_361", "from": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_await_360_360", "to": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_361_361", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 361, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 361 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_361_361_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_branch_361_361_evaluates-condition_361", "from": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_361_361", "to": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_branch_361_361", "kind": "evaluates-condition", "label": "Return OK or BadRequest based on mediator result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 361, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 361 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_branch_361_361_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_return_364_364_returns_364", "from": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_branch_361_361", "to": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_return_364_364", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 364, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 364 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_367_invokes_367", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_367", "kind": "handles-route", "label": "StripeWebhook (POST /api/StripeWebhook)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 367, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 367 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_367_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_373_373_invokes_373", "from": "flow_method_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_367", "to": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_373_373", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 373, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 373 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_373_373_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_repository_read_374_374_invokes_374", "from": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_373_373", "to": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_repository_read_374_374", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 374, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 374 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_repository_read_374_374_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_374_374_invokes_374", "from": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_repository_read_374_374", "to": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_374_374", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 374, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 374 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_374_374_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_try_377_377_invokes_377", "from": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_374_374", "to": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_try_377_377", "kind": "invokes", "label": "Begins protected execution", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 377, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 377 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_try_377_377_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_repository_read_381_381_invokes_381", "from": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_try_377_377", "to": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_repository_read_381_381", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 381, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 381 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_repository_read_381_381_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_switch_385_385_evaluates-condition_385", "from": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_repository_read_381_381", "to": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_switch_385_385", "kind": "evaluates-condition", "label": "stripeEvent.Type", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 385, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 385 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_switch_385_385_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_389_389_invokes_389", "from": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_switch_385_385", "to": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_389_389", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 389, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 389 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_389_389_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_394_394_invokes_394", "from": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_389_389", "to": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_394_394", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 394, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 394 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_394_394_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_399_399_invokes_399", "from": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_394_394", "to": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_399_399", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 399, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 399 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_399_399_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_return_402_402_returns_402", "from": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_399_399", "to": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_return_402_402", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 402, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 402 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_return_402_402_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_catch_404_404_invokes_404", "from": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_return_402_402", "to": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_catch_404_404", "kind": "invokes", "label": "handled exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 404, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 404 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_catch_404_404_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_return_406_406_returns_406", "from": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_catch_404_404", "to": "flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_return_406_406", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 406, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 406 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_handlesubscriptionsuccess_410_invokes_410", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_handlesubscriptionsuccess_410", "kind": "handles-route", "label": "HandleSubscriptionSuccess", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 410, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 410 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_handlesubscriptionsuccess_410_flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_guard_clause_416_416_evaluates-condition_416", "from": "flow_method_nexusreader_web_program_cs_handlesubscriptionsuccess_410", "to": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_guard_clause_416_416", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 416, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 416 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_guard_clause_416_416_flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_repository_read_418_418_invokes_418", "from": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_guard_clause_416_416", "to": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_repository_read_418_418", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 418, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 418 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_repository_read_418_418_flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_await_418_418_invokes_418", "from": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_repository_read_418_418", "to": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_await_418_418", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 418, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 418 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_await_418_418_flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_branch_419_419_evaluates-condition_419", "from": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_await_418_418", "to": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_branch_419_419", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 419, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 419 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_branch_419_419_flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_await_422_422_invokes_422", "from": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_branch_419_419", "to": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_await_422_422", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 422, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 422 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_await_422_422_flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_branch_424_424_evaluates-condition_424", "from": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_await_422_422", "to": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_branch_424_424", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 424, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 424 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_branch_424_424_flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_await_430_430_invokes_430", "from": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_branch_424_424", "to": "flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_await_430_430", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 430, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 430 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_handlesubscriptioncancellation_434_invokes_434", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_handlesubscriptioncancellation_434", "kind": "handles-route", "label": "HandleSubscriptionCancellation", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 434, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 434 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_handlesubscriptioncancellation_434_flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_guard_clause_439_439_evaluates-condition_439", "from": "flow_method_nexusreader_web_program_cs_handlesubscriptioncancellation_434", "to": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_guard_clause_439_439", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 439, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 439 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_guard_clause_439_439_flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_repository_read_441_441_invokes_441", "from": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_guard_clause_439_439", "to": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_repository_read_441_441", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 441, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 441 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_repository_read_441_441_flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_await_441_441_invokes_441", "from": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_repository_read_441_441", "to": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_await_441_441", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 441, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 441 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_await_441_441_flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_branch_442_442_evaluates-condition_442", "from": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_await_441_441", "to": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_branch_442_442", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 442, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 442 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_branch_442_442_flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_repository_read_444_444_invokes_444", "from": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_branch_442_442", "to": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_repository_read_444_444", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 444, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 444 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_repository_read_444_444_flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_await_444_444_invokes_444", "from": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_repository_read_444_444", "to": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_await_444_444", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 444, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 444 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_await_444_444_flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_await_447_447_invokes_447", "from": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_await_444_444", "to": "flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_await_447_447", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 447, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 447 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_map_identity_api_mapgroup_identity_451_invokes_451", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_map_identity_api_mapgroup_identity_451", "kind": "handles-route", "label": "Map Identity API (MapGroup /identity)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 451, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 451 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_identity_login_get_identity_login_google_453_invokes_453", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_identity_login_get_identity_login_google_453", "kind": "handles-route", "label": "Identity Login (GET /identity/login/google)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 453, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 453 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_identity_login_get_identity_login_google_453_flow_action_nexusreader_web_program_cs_identity_login_get_identity_login_google_return_460_460_returns_460", "from": "flow_method_nexusreader_web_program_cs_identity_login_get_identity_login_google_453", "to": "flow_action_nexusreader_web_program_cs_identity_login_get_identity_login_google_return_460_460", "kind": "returns", "label": "Return Challenge to Google", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 460, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 460 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_login_get_identity_login_google_return_460_460_flow_action_nexusreader_web_program_cs_identity_login_get_identity_login_google_return_460_460_returns_460", "from": "flow_action_nexusreader_web_program_cs_identity_login_get_identity_login_google_return_460_460", "to": "flow_action_nexusreader_web_program_cs_identity_login_get_identity_login_google_return_460_460", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 460, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 460 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_463_invokes_463", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_463", "kind": "handles-route", "label": "Identity Callback (GET /identity/callback/google)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 463, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 463 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_463_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_guard_clause_469_469_evaluates-condition_469", "from": "flow_method_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_463", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_guard_clause_469_469", "kind": "evaluates-condition", "label": "log warning & redirect Error", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 469, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 469 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_guard_clause_469_469_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_469_469_invokes_469", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_guard_clause_469_469", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_469_469", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 469, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 469 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_469_469_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_470_470_evaluates-condition_470", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_469_469", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_470_470", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 470, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 470 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_470_470_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_472_472_invokes_472", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_470_470", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_472_472", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 472, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 472 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_472_472_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_473_473_returns_473", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_472_472", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_473_473", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 473, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 473 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_473_473_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_476_476_evaluates-condition_476", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_473_473", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_476_476", "kind": "evaluates-condition", "label": "Handle existing external login sign-in", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 476, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 476 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_476_476_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_476_476_invokes_476", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_476_476", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_476_476", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 476, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 476 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_476_476_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_477_477_evaluates-condition_477", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_476_476", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_477_477", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 477, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 477 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_477_477_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_479_479_invokes_479", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_477_477", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_479_479", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 479, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 479 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_479_479_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_480_480_returns_480", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_479_479", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_480_480", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 480, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 480 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_480_480_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_483_483_evaluates-condition_483", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_480_480", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_483_483", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 483, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 483 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_483_483_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_485_485_invokes_485", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_483_483", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_485_485", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 485, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 485 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_485_485_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_485_485_invokes_485", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_485_485", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_485_485", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 485, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 485 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_485_485_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_486_486_returns_486", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_485_485", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_486_486", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 486, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 486 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_486_486_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_490_490_invokes_490", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_486_486", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_490_490", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 490, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 490 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_490_490_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_491_491_evaluates-condition_491", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_repository_read_490_490", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_491_491", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 491, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 491 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_491_491_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_494_494_invokes_494", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_491_491", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_494_494", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 494, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 494 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_494_494_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_496_496_evaluates-condition_496", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_494_494", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_496_496", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 496, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 496 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_496_496_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_498_498_invokes_498", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_496_496", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_498_498", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 498, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 498 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_498_498_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_499_499_invokes_499", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_498_498", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_499_499", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 499, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 499 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_499_499_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_501_501_returns_501", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_await_499_499", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_501_501", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 501, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 501 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_501_501_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_loop_505_505_loops-to_505", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_501_501", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_loop_505_505", "kind": "loops-to", "label": "var error in createResult.Errors", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 505, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 505 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_loop_505_505_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_507_507_invokes_507", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_loop_505_505", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_507_507", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 507, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 507 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_507_507_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_510_510_evaluates-condition_510", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_507_507", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_510_510", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 510, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 510 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_510_510_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_512_512_returns_512", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_branch_510_510", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_512_512", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 512, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 512 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_512_512_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_516_516_invokes_516", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_512_512", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_516_516", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 516, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 516 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_516_516_flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_517_517_returns_517", "from": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_log_516_516", "to": "flow_action_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_return_517_517", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 517, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 517 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_account_login_form_post_account_login_form_520_invokes_520", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_account_login_form_post_account_login_form_520", "kind": "handles-route", "label": "Account Login Form (POST /account/login-form)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 520, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 520 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_account_login_form_post_account_login_form_520_flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_await_528_528_invokes_528", "from": "flow_method_nexusreader_web_program_cs_account_login_form_post_account_login_form_520", "to": "flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_await_528_528", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 528, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 528 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_await_528_528_flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_branch_529_529_evaluates-condition_529", "from": "flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_await_528_528", "to": "flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_branch_529_529", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 529, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 529 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_branch_529_529_flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_return_532_532_returns_532", "from": "flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_branch_529_529", "to": "flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_return_532_532", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 532, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 532 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_return_532_532_flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_return_536_536_returns_536", "from": "flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_return_532_532", "to": "flow_action_nexusreader_web_program_cs_account_login_form_post_account_login_form_return_536_536", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 536, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 536 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_knowledgerequest_566_maps-dto_566", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_knowledgerequest_566", "kind": "maps-dto", "label": "dto KnowledgeRequest", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 566, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 566 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_groundednessrequest_567_maps-dto_567", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_groundednessrequest_567", "kind": "maps-dto", "label": "dto GroundednessRequest", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 567, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 567 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_semanticsearchrequest_568_maps-dto_568", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_semanticsearchrequest_568", "kind": "maps-dto", "label": "dto SemanticSearchRequest", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 568, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 568 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_askquestionrequest_569_maps-dto_569", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_askquestionrequest_569", "kind": "maps-dto", "label": "dto AskQuestionRequest", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 569, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 569 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_framework_34_registers-service_34", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_framework_34", "kind": "registers-service", "label": "Razor/Blazor services", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 34, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 34 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_webplatformservice_47_registers-service_47", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_webplatformservice_47", "kind": "registers-service", "label": "IPlatformService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 47 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_named_httpclient_58_registers-service_58", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_named_httpclient_58", "kind": "registers-service", "label": "HttpClient 'NexusAPI'", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 58, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 58 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_serveridentityservice_75_registers-service_75", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_serveridentityservice_75", "kind": "registers-service", "label": "IIdentityService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 75, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 75 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_addapplication_78_registers-service_78", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_addapplication_78", "kind": "registers-service", "label": "Application layer", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 78 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_addinfrastructure_iconfiguration_79_registers-service_79", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_addinfrastructure_iconfiguration_79", "kind": "registers-service", "label": "Infrastructure layer", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 79 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_registerservicesfromassemblies_81_registers-service_81", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_registerservicesfromassemblies_81", "kind": "registers-service", "label": "MediatR handlers", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 81, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 81 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_tokenlimithandler_87_registers-service_87", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_tokenlimithandler_87", "kind": "registers-service", "label": "IAuthorizationHandler", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 87, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 87 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_nexusreader_infrastructure_services_billingservice_93_registers-service_93", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_nexusreader_infrastructure_services_billingservice_93", "kind": "registers-service", "label": "IBillingService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 93, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 93 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_identity_ef_stores_107_registers-service_107", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_identity_ef_stores_107", "kind": "registers-service", "label": "Identity endpoints & stores", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 107, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 107 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_usehangfiredashboard_163_configures-pipeline_163", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_usehangfiredashboard_163", "kind": "configures-pipeline", "label": "middleware", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 163, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 163 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_database_initialization_and_seeding_with_retries_175_configures-pipeline_175", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_database_initialization_and_seeding_with_retries_175", "kind": "configures-pipeline", "label": "unknown", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 175, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 175 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_configure_pipeline_and_run_225_configures-pipeline_225", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_configure_pipeline_and_run_225", "kind": "configures-pipeline", "label": "middleware", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 225, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 225 } ] }, { "id": "edge_flow_file_nexusreader_application_dtos_user_authordto_cs_file_1_flow_type_nexusreader_application_dtos_user_authordto_cs_authordto_3_maps-dto_3", "from": "flow_file_nexusreader_application_dtos_user_authordto_cs_file_1", "to": "flow_type_nexusreader_application_dtos_user_authordto_cs_authordto_3", "kind": "maps-dto", "label": "dto AuthorDto", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/DTOs/User/AuthorDto.cs", "sourceLine": 3, "evidencePaths": [ "NexusReader.Application/DTOs/User/AuthorDto.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/DTOs/User/AuthorDto.cs", "line": 3 } ] }, { "id": "edge_flow_file_nexusreader_application_security_authorization_prouserhandler_cs_file_1_flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20_invokes_20", "from": "flow_file_nexusreader_application_security_authorization_prouserhandler_cs_file_1", "to": "flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20", "kind": "invokes", "label": "HandleRequirementAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 20, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 20 } ] }, { "id": "edge_flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_24_24_invokes_24", "from": "flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_24_24", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 24, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 24 } ] }, { "id": "edge_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_24_24_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_25_25_evaluates-condition_25", "from": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_24_24", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_25_25", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 25, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 25 } ] }, { "id": "edge_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_25_25_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_guard_clause_25_25_evaluates-condition_25", "from": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_25_25", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_guard_clause_25_25", "kind": "evaluates-condition", "label": "return (no authorization attempt)", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 25, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 25 } ] }, { "id": "edge_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_guard_clause_25_25_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_27_27_returns_27", "from": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_guard_clause_25_25", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_27_27", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 27, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 27 } ] }, { "id": "edge_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_27_27_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_await_31_31_invokes_31", "from": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_27_27", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_await_31_31", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 31, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 31 } ] }, { "id": "edge_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_await_31_31_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_35_35_evaluates-condition_35", "from": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_await_31_31", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_35_35", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 35, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 35 } ] }, { "id": "edge_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_35_35_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_37_37_returns_37", "from": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_35_35", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_37_37", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 37, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 37 } ] }, { "id": "edge_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_37_37_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_40_40_evaluates-condition_40", "from": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_37_37", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_40_40", "kind": "evaluates-condition", "label": "context.Succeed(requirement) / return", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 40, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 40 } ] }, { "id": "edge_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_40_40_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_41_41_evaluates-condition_41", "from": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_40_40", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_41_41", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 41, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 41 } ] }, { "id": "edge_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_41_41_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_43_43_invokes_43", "from": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_41_41", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_43_43", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 43, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 43 } ] }, { "id": "edge_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_43_43_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_44_44_returns_44", "from": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_43_43", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_44_44", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 44, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 44 } ] }, { "id": "edge_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_44_44_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_47_47_evaluates-condition_47", "from": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_44_44", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_47_47", "kind": "evaluates-condition", "label": "context.Succeed(requirement) / return", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 47 } ] }, { "id": "edge_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_47_47_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_48_48_evaluates-condition_48", "from": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_47_47", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_48_48", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 48, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 48 } ] }, { "id": "edge_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_48_48_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_50_50_invokes_50", "from": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_branch_48_48", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_50_50", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 50, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 50 } ] }, { "id": "edge_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_50_50_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_51_51_returns_51", "from": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_50_50", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_return_51_51", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 51, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "line": 51 } ] }, { "id": "edge_flow_file_nexusreader_application_security_authorization_prouserrequirement_cs_file_1_flow_type_nexusreader_application_security_authorization_prouserrequirement_cs_prouserrequirement_8_defines-type_8", "from": "flow_file_nexusreader_application_security_authorization_prouserrequirement_cs_file_1", "to": "flow_type_nexusreader_application_security_authorization_prouserrequirement_cs_prouserrequirement_8", "kind": "defines-type", "label": "model ProUserRequirement", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "sourceLine": 8, "evidencePaths": [ "NexusReader.Application/Security/Authorization/ProUserRequirement.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "line": 8 } ] }, { "id": "edge_flow_file_nexusreader_domain_entities_author_cs_file_1_flow_type_nexusreader_domain_entities_author_cs_author_5_reads-entity_5", "from": "flow_file_nexusreader_domain_entities_author_cs_file_1", "to": "flow_type_nexusreader_domain_entities_author_cs_author_5", "kind": "reads-entity", "label": "entity Author", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Domain/Entities/Author.cs", "sourceLine": 5, "evidencePaths": [ "NexusReader.Domain/Entities/Author.cs" ], "evidenceReferences": [ { "path": "NexusReader.Domain/Entities/Author.cs", "line": 5 } ] }, { "id": "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_invokes_27", "from": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "to": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "kind": "invokes", "label": "SendAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 27 } ] }, { "id": "edge_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27_invokes_27", "from": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 27 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32_evaluates-condition_32", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32", "kind": "evaluates-condition", "label": "isAuthEndpoint=true / isAuthEndpoint=false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 32, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 32 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_38_38_evaluates-condition_38", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_38_38", "kind": "evaluates-condition", "label": "isTrustedHost=true / isTrustedHost=false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 38, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 38 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_38_38_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45_evaluates-condition_45", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_38_38", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 45 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_47_47_invokes_47", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_47_47", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 47 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_47_47_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_48_48_evaluates-condition_48", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_47_47", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_48_48", "kind": "evaluates-condition", "label": "attach-bearer / skip-attachment", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 48, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 48 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_48_48_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48_evaluates-condition_48", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_48_48", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 48, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 48 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55_invokes_55", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 55, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 55 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_55_55_invokes_55", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_55_55", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 55, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 55 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_55_55_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58_evaluates-condition_58", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_55_55", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 58, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 58 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_60_60_invokes_60", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_60_60", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 60, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 60 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_60_60_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_try_61_61_invokes_61", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_60_60", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_try_61_61", "kind": "invokes", "label": "Begins protected execution", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 61, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 61 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_try_61_61_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_64_64_invokes_64", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_try_61_61", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_64_64", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 64, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 64 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_64_64_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69_evaluates-condition_69", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_64_64", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69", "kind": "evaluates-condition", "label": "use-new-token / perform-refresh", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 69, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 69 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73_falls-back_73", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 73, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 73 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_78_78_invokes_78", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_78_78", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 78 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_78_78_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79_evaluates-condition_79", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_78_78", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 79 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_81_81_invokes_81", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_81_81", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 81, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 81 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_81_81_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_falls-back_85", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_81_81", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 85, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 85 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_87_87_invokes_87", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_87_87", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 87, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 87 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_87_87_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_91_91_evaluates-condition_91", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_87_87", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_91_91", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 91, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 91 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_91_91_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_93_93_invokes_93", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_91_91", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_93_93", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 93, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 93 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_93_93_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_95_95_invokes_95", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_93_93", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_95_95", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 95, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 95 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_95_95_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_95_95_returns_95", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_95_95", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_95_95", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 95, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 95 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_95_95_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_95_95_invokes_95", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_95_95", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_95_95", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 95, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 95 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_95_95_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_catch_98_98_invokes_98", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_await_95_95", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_catch_98_98", "kind": "invokes", "label": "handled exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 98, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 98 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_catch_98_98_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_finally_103_103_invokes_103", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_catch_98_98", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_finally_103_103", "kind": "invokes", "label": "Runs cleanup or finalization", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 103, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 103 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_finally_103_103_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_109_109_returns_109", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_finally_103_103", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_109_109", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 109, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 109 } ] }, { "id": "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112_invokes_112", "from": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "to": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "kind": "invokes", "label": "CloneHttpRequestMessageAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 112, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 112 } ] }, { "id": "edge_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119_evaluates-condition_119", "from": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119", "kind": "evaluates-condition", "label": "copy-content / no-content", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 119, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 119 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_await_122_122_invokes_122", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_await_122_122", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 122, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 122 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_await_122_122_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_126_126_loops-to_126", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_await_122_122", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_126_126", "kind": "loops-to", "label": "Copy content headers", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 126, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 126 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_126_126_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_126_126_loops-to_126", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_126_126", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_126_126", "kind": "loops-to", "label": "var h in req.Content.Headers", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 126, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 126 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_126_126_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_132_132_loops-to_132", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_126_126", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_132_132", "kind": "loops-to", "label": "Copy request headers", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 132, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 132 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_132_132_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_132_132_loops-to_132", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_132_132", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_132_132", "kind": "loops-to", "label": "var h in req.Headers", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 132, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 132 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_132_132_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_return_139_139_returns_139", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_132_132", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_return_139_139", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 139, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 139 } ] }, { "id": "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_type_nexusreader_web_client_handlers_authenticationheaderhandler_cs_authenticationheaderhandler_14_defines-type_14", "from": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "to": "flow_type_nexusreader_web_client_handlers_authenticationheaderhandler_cs_authenticationheaderhandler_14", "kind": "defines-type", "label": "model AuthenticationHeaderHandler", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 14, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 14 } ] }, { "id": "edge_flow_file_nexusreader_ui_shared_pages_account_login_razor_file_1_flow_method_nexusreader_ui_shared_pages_account_login_razor_oninitialized_110_invokes_110", "from": "flow_file_nexusreader_ui_shared_pages_account_login_razor_file_1", "to": "flow_method_nexusreader_ui_shared_pages_account_login_razor_oninitialized_110", "kind": "invokes", "label": "OnInitialized", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 110, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 110 } ] }, { "id": "edge_flow_method_nexusreader_ui_shared_pages_account_login_razor_oninitialized_110_flow_action_nexusreader_ui_shared_pages_account_login_razor_oninitialized_guard_clause_112_112_evaluates-condition_112", "from": "flow_method_nexusreader_ui_shared_pages_account_login_razor_oninitialized_110", "to": "flow_action_nexusreader_ui_shared_pages_account_login_razor_oninitialized_guard_clause_112_112", "kind": "evaluates-condition", "label": "map error to message / no-op", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 112, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 112 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_login_razor_oninitialized_guard_clause_112_112_flow_action_nexusreader_ui_shared_pages_account_login_razor_oninitialized_branch_112_112_evaluates-condition_112", "from": "flow_action_nexusreader_ui_shared_pages_account_login_razor_oninitialized_guard_clause_112_112", "to": "flow_action_nexusreader_ui_shared_pages_account_login_razor_oninitialized_branch_112_112", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 112, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 112 } ] }, { "id": "edge_flow_file_nexusreader_ui_shared_pages_account_login_razor_file_1_flow_method_nexusreader_ui_shared_pages_account_login_razor_handlelogin_126_invokes_126", "from": "flow_file_nexusreader_ui_shared_pages_account_login_razor_file_1", "to": "flow_method_nexusreader_ui_shared_pages_account_login_razor_handlelogin_126", "kind": "invokes", "label": "HandleLogin", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 126, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 126 } ] }, { "id": "edge_flow_method_nexusreader_ui_shared_pages_account_login_razor_handlelogin_126_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_try_131_131_invokes_131", "from": "flow_method_nexusreader_ui_shared_pages_account_login_razor_handlelogin_126", "to": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_try_131_131", "kind": "invokes", "label": "Begins protected execution", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 131, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 131 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_try_131_131_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_await_133_133_invokes_133", "from": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_try_131_131", "to": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_await_133_133", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 133, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 133 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_await_133_133_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_branch_134_134_evaluates-condition_134", "from": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_await_133_133", "to": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_branch_134_134", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 134, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 134 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_branch_134_134_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_await_137_137_invokes_137", "from": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_branch_134_134", "to": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_await_137_137", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 137, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 137 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_await_137_137_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_fallback_139_139_falls-back_139", "from": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_await_137_137", "to": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_fallback_139_139", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 139, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 139 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_fallback_139_139_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_repository_read_141_141_invokes_141", "from": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_fallback_139_139", "to": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_repository_read_141_141", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 141, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 141 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_repository_read_141_141_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_catch_144_144_invokes_144", "from": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_repository_read_141_141", "to": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_catch_144_144", "kind": "invokes", "label": "handled exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 144, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 144 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_catch_144_144_flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_finally_148_148_invokes_148", "from": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_catch_144_144", "to": "flow_action_nexusreader_ui_shared_pages_account_login_razor_handlelogin_finally_148_148", "kind": "invokes", "label": "Runs cleanup or finalization", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 148, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 148 } ] }, { "id": "edge_flow_file_nexusreader_ui_shared_pages_account_login_razor_file_1_flow_type_nexusreader_ui_shared_pages_account_login_razor_loginmodel_157_maps-dto_157", "from": "flow_file_nexusreader_ui_shared_pages_account_login_razor_file_1", "to": "flow_type_nexusreader_ui_shared_pages_account_login_razor_loginmodel_157", "kind": "maps-dto", "label": "dto LoginModel", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Login.razor", "sourceLine": 157, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Login.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Login.razor", "line": 157 } ] }, { "id": "edge_flow_file_nexusreader_ui_shared_pages_account_profile_razor_file_1_flow_method_nexusreader_ui_shared_pages_account_profile_razor_render_markup_1_invokes_1", "from": "flow_file_nexusreader_ui_shared_pages_account_profile_razor_file_1", "to": "flow_method_nexusreader_ui_shared_pages_account_profile_razor_render_markup_1", "kind": "invokes", "label": "Render (markup)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 1, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 1 } ] }, { "id": "edge_flow_method_nexusreader_ui_shared_pages_account_profile_razor_render_markup_1_flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_guard_clause_14_14_evaluates-condition_14", "from": "flow_method_nexusreader_ui_shared_pages_account_profile_razor_render_markup_1", "to": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_guard_clause_14_14", "kind": "evaluates-condition", "label": "render-loading / render-profile", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 14, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 14 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_guard_clause_14_14_flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_branch_14_14_evaluates-condition_14", "from": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_guard_clause_14_14", "to": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_branch_14_14", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 14, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 14 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_branch_14_14_flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_fallback_21_21_falls-back_21", "from": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_branch_14_14", "to": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_fallback_21_21", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 21, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 21 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_fallback_21_21_flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1_uses-service_44", "from": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_fallback_21_21", "to": "flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1", "kind": "uses-service", "label": "NexusIcon", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 44, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 44 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_fallback_21_21_flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1_uses-service_65", "from": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_fallback_21_21", "to": "flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1", "kind": "uses-service", "label": "NexusIcon", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 65, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 65 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_fallback_21_21_flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1_uses-service_74", "from": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_fallback_21_21", "to": "flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1", "kind": "uses-service", "label": "NexusIcon", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 74, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 74 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_fallback_21_21_flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1_uses-service_83", "from": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_fallback_21_21", "to": "flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1", "kind": "uses-service", "label": "NexusIcon", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 83, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 83 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_fallback_21_21_flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1_uses-service_94", "from": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_render_markup_fallback_21_21", "to": "flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1", "kind": "uses-service", "label": "NexusIcon", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 94, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 94 } ] }, { "id": "edge_flow_file_nexusreader_ui_shared_pages_account_profile_razor_file_1_flow_method_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_111_invokes_111", "from": "flow_file_nexusreader_ui_shared_pages_account_profile_razor_file_1", "to": "flow_method_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_111", "kind": "invokes", "label": "OnInitializedAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 111, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 111 } ] }, { "id": "edge_flow_method_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_111_flow_action_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_await_113_113_invokes_113", "from": "flow_method_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_111", "to": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_await_113_113", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 113, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 113 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_await_113_113_flow_action_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_guard_clause_114_114_evaluates-condition_114", "from": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_await_113_113", "to": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_guard_clause_114_114", "kind": "evaluates-condition", "label": "assign-_profile / no-op", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 114, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 114 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_guard_clause_114_114_flow_action_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_branch_114_114_evaluates-condition_114", "from": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_guard_clause_114_114", "to": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_oninitializedasync_branch_114_114", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 114, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 114 } ] }, { "id": "edge_flow_file_nexusreader_ui_shared_pages_account_profile_razor_file_1_flow_method_nexusreader_ui_shared_pages_account_profile_razor_calculateprogress_121_invokes_121", "from": "flow_file_nexusreader_ui_shared_pages_account_profile_razor_file_1", "to": "flow_method_nexusreader_ui_shared_pages_account_profile_razor_calculateprogress_121", "kind": "invokes", "label": "CalculateProgress", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 121, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 121 } ] }, { "id": "edge_flow_method_nexusreader_ui_shared_pages_account_profile_razor_calculateprogress_121_flow_action_nexusreader_ui_shared_pages_account_profile_razor_calculateprogress_guard_clause_123_123_evaluates-condition_123", "from": "flow_method_nexusreader_ui_shared_pages_account_profile_razor_calculateprogress_121", "to": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_calculateprogress_guard_clause_123_123", "kind": "evaluates-condition", "label": "return-0 / compute-percent", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 123, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 123 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_profile_razor_calculateprogress_guard_clause_123_123_flow_action_nexusreader_ui_shared_pages_account_profile_razor_calculateprogress_return_125_125_returns_125", "from": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_calculateprogress_guard_clause_123_123", "to": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_calculateprogress_return_125_125", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 125, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 125 } ] }, { "id": "edge_flow_file_nexusreader_ui_shared_pages_account_profile_razor_file_1_flow_method_nexusreader_ui_shared_pages_account_profile_razor_handlelogout_133_invokes_133", "from": "flow_file_nexusreader_ui_shared_pages_account_profile_razor_file_1", "to": "flow_method_nexusreader_ui_shared_pages_account_profile_razor_handlelogout_133", "kind": "invokes", "label": "HandleLogout", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 133, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 133 } ] }, { "id": "edge_flow_method_nexusreader_ui_shared_pages_account_profile_razor_handlelogout_133_flow_action_nexusreader_ui_shared_pages_account_profile_razor_handlelogout_await_135_135_invokes_135", "from": "flow_method_nexusreader_ui_shared_pages_account_profile_razor_handlelogout_133", "to": "flow_action_nexusreader_ui_shared_pages_account_profile_razor_handlelogout_await_135_135", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Profile.razor", "sourceLine": 135, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Profile.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Profile.razor", "line": 135 } ] }, { "id": "edge_flow_file_nexusreader_ui_shared_pages_account_register_razor_file_1_flow_method_nexusreader_ui_shared_pages_account_register_razor_handleregister_84_invokes_84", "from": "flow_file_nexusreader_ui_shared_pages_account_register_razor_file_1", "to": "flow_method_nexusreader_ui_shared_pages_account_register_razor_handleregister_84", "kind": "invokes", "label": "HandleRegister", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 84, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 84 } ] }, { "id": "edge_flow_method_nexusreader_ui_shared_pages_account_register_razor_handleregister_84_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_try_89_89_invokes_89", "from": "flow_method_nexusreader_ui_shared_pages_account_register_razor_handleregister_84", "to": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_try_89_89", "kind": "invokes", "label": "Begins protected execution", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 89, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 89 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_try_89_89_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_91_91_invokes_91", "from": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_try_89_89", "to": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_91_91", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 91, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 91 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_91_91_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_branch_92_92_evaluates-condition_92", "from": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_91_91", "to": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_branch_92_92", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 92, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 92 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_branch_92_92_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_94_94_invokes_94", "from": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_branch_92_92", "to": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_94_94", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 94, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 94 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_94_94_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_branch_95_95_evaluates-condition_95", "from": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_94_94", "to": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_branch_95_95", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 95, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 95 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_branch_95_95_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_98_98_invokes_98", "from": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_branch_95_95", "to": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_98_98", "kind": "invokes", "label": "Waits for async work", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 98, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 98 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_98_98_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_fallback_100_100_falls-back_100", "from": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_await_98_98", "to": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_fallback_100_100", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 100, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 100 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_fallback_100_100_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_fallback_105_105_falls-back_105", "from": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_fallback_100_100", "to": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_fallback_105_105", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 105, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 105 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_fallback_105_105_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_repository_read_107_107_invokes_107", "from": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_fallback_105_105", "to": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_repository_read_107_107", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 107, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 107 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_repository_read_107_107_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_catch_110_110_invokes_110", "from": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_repository_read_107_107", "to": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_catch_110_110", "kind": "invokes", "label": "handled exception", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 110, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 110 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_catch_110_110_flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_finally_114_114_invokes_114", "from": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_catch_110_110", "to": "flow_action_nexusreader_ui_shared_pages_account_register_razor_handleregister_finally_114_114", "kind": "invokes", "label": "Runs cleanup or finalization", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 114, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 114 } ] }, { "id": "edge_flow_file_nexusreader_ui_shared_pages_account_register_razor_file_1_flow_type_nexusreader_ui_shared_pages_account_register_razor_registermodel_120_maps-dto_120", "from": "flow_file_nexusreader_ui_shared_pages_account_register_razor_file_1", "to": "flow_type_nexusreader_ui_shared_pages_account_register_razor_registermodel_120", "kind": "maps-dto", "label": "dto RegisterModel", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Pages/Account/Register.razor", "sourceLine": 120, "evidencePaths": [ "NexusReader.UI.Shared/Pages/Account/Register.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Pages/Account/Register.razor", "line": 120 } ] }, { "id": "edge_flow_file_nexusreader_application_abstractions_messaging_icommand_cs_file_1_flow_type_nexusreader_application_abstractions_messaging_icommand_cs_icommand_6_defines-type_6", "from": "flow_file_nexusreader_application_abstractions_messaging_icommand_cs_file_1", "to": "flow_type_nexusreader_application_abstractions_messaging_icommand_cs_icommand_6", "kind": "defines-type", "label": "interface ICommand", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Abstractions/Messaging/ICommand.cs", "sourceLine": 6, "evidencePaths": [ "NexusReader.Application/Abstractions/Messaging/ICommand.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "line": 6 } ] }, { "id": "edge_flow_file_nexusreader_application_abstractions_messaging_icommand_cs_file_1_flow_type_nexusreader_application_abstractions_messaging_icommand_cs_icommand_tresponse_10_defines-type_10", "from": "flow_file_nexusreader_application_abstractions_messaging_icommand_cs_file_1", "to": "flow_type_nexusreader_application_abstractions_messaging_icommand_cs_icommand_tresponse_10", "kind": "defines-type", "label": "interface ICommand", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Abstractions/Messaging/ICommand.cs", "sourceLine": 10, "evidencePaths": [ "NexusReader.Application/Abstractions/Messaging/ICommand.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "line": 10 } ] }, { "id": "edge_flow_file_nexusreader_application_abstractions_messaging_icommandhandler_cs_file_1_flow_type_nexusreader_application_abstractions_messaging_icommandhandler_cs_icommandhandler_tcommand_6_defines-type_6", "from": "flow_file_nexusreader_application_abstractions_messaging_icommandhandler_cs_file_1", "to": "flow_type_nexusreader_application_abstractions_messaging_icommandhandler_cs_icommandhandler_tcommand_6", "kind": "defines-type", "label": "interface ICommandHandler", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "sourceLine": 6, "evidencePaths": [ "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "line": 6 } ] }, { "id": "edge_flow_file_nexusreader_application_abstractions_messaging_icommandhandler_cs_file_1_flow_type_nexusreader_application_abstractions_messaging_icommandhandler_cs_icommandhandler_tcommand_tresponse_11_defines-type_11", "from": "flow_file_nexusreader_application_abstractions_messaging_icommandhandler_cs_file_1", "to": "flow_type_nexusreader_application_abstractions_messaging_icommandhandler_cs_icommandhandler_tcommand_tresponse_11", "kind": "defines-type", "label": "interface ICommandHandler", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "sourceLine": 11, "evidencePaths": [ "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "line": 11 } ] }, { "id": "edge_flow_file_nexusreader_application_abstractions_messaging_iquery_cs_file_1_flow_type_nexusreader_application_abstractions_messaging_iquery_cs_iquery_tresponse_6_defines-type_6", "from": "flow_file_nexusreader_application_abstractions_messaging_iquery_cs_file_1", "to": "flow_type_nexusreader_application_abstractions_messaging_iquery_cs_iquery_tresponse_6", "kind": "defines-type", "label": "interface IQuery", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Abstractions/Messaging/IQuery.cs", "sourceLine": 6, "evidencePaths": [ "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Abstractions/Messaging/IQuery.cs", "line": 6 } ] }, { "id": "edge_flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1_flow_method_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_1_invokes_1", "from": "flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1", "to": "flow_method_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_1", "kind": "invokes", "label": "Render (Razor template / component render)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourceLine": 1, "evidencePaths": [ "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "line": 1 } ] }, { "id": "edge_flow_method_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_1_flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_switch_2_2_evaluates-condition_2", "from": "flow_method_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_1", "to": "flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_switch_2_2", "kind": "evaluates-condition", "label": "Name.ToLowerInvariant()", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourceLine": 2, "evidencePaths": [ "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "line": 2 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_switch_2_2_flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_branch_2_2_evaluates-condition_2", "from": "flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_switch_2_2", "to": "flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_branch_2_2", "kind": "evaluates-condition", "label": "home (lines 4-7) / map (lines 8-12) / share-2 (lines 13-19) / help-circle (lines 20-24)", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourceLine": 2, "evidencePaths": [ "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "line": 2 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_branch_2_2_flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_fallback_89_89_falls-back_89", "from": "flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_branch_2_2", "to": "flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_fallback_89_89", "kind": "falls-back", "label": "Default icon fallback", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourceLine": 89, "evidencePaths": [ "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "line": 89 } ] }, { "id": "edge_flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_fallback_89_89_flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_fallback_89_89_falls-back_89", "from": "flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_fallback_89_89", "to": "flow_action_nexusreader_ui_shared_components_atoms_nexusicon_razor_render_razor_template_component_render_fallback_89_89", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourceLine": 89, "evidencePaths": [ "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "line": 89 } ] }, { "id": "edge_flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1_flow_type_nexusreader_ui_shared_components_atoms_nexusicon_razor_nexusicon_component_parameters_96_maps-dto_96", "from": "flow_file_nexusreader_ui_shared_components_atoms_nexusicon_razor_file_1", "to": "flow_type_nexusreader_ui_shared_components_atoms_nexusicon_razor_nexusicon_component_parameters_96", "kind": "maps-dto", "label": "view-model NexusIcon (component parameters)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "sourceLine": 96, "evidencePaths": [ "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor" ], "evidenceReferences": [ { "path": "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "line": 96 } ] } ], "flows": [ { "id": "flow_2_nexusreader_maui_mauiprogram_cs", "name": "MauiProgram", "category": "frontend-to-backend", "entryNodeId": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "nodeIds": [ "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "flow_file_nexusreader_web_program_cs_file_1", "flow_method_nexusreader_web_program_cs_program_top_level_29", "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127" ], "edgeIds": [ "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_invokes_12", "edge_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_invokes_14", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_invokes_59", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63_invokes_63", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines-type_10", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers-service_28", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers-service_29", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers-service_32", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33_registers-service_33", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35_registers-service_35", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38_registers-service_38", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41_registers-service_41", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42_registers-service_42", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43_registers-service_43", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44_registers-service_44", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_configures-pipeline_12", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_program_top_level_29_invokes_29", "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates-condition_62", "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls-back_66", "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_invokes_125", "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_invokes_126", "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_invokes_127", "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129_evaluates-condition_129", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250_invokes_250", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledge_api_group_mappings_261_invokes_261", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_330_invokes_330", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355_invokes_355", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_367_invokes_367", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_handlesubscriptionsuccess_410_invokes_410", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_handlesubscriptioncancellation_434_invokes_434", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_map_identity_api_mapgroup_identity_451_invokes_451", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_identity_login_get_identity_login_google_453_invokes_453", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_463_invokes_463", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_account_login_form_post_account_login_form_520_invokes_520", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_knowledgerequest_566_maps-dto_566", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_groundednessrequest_567_maps-dto_567", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_semanticsearchrequest_568_maps-dto_568", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_askquestionrequest_569_maps-dto_569" ], "confidence": "high", "businessValue": 75, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 1 } ], "businessSignals": [ "trigger", "validation-decision" ], "scoreBreakdown": { "entrypointQuality": 25, "crossLayerDepth": 7, "businessSignals": 8, "evidenceStrength": 20, "contractCoverage": 15, "total": 75 }, "validationIssues": [], "recommendedDiagramKinds": [ "primary-runtime", "control-flow", "dependency-map", "class-diagram", "method-flow" ], "producedArtifacts": [ { "id": "top_business_flows_md_phase_inputs", "label": "Phase Inputs", "path": "machine/phase-inputs/business__top-business-flows.phase-inputs.json", "producerPath": "src/documentation/v4/phase4Generation.ts", "status": "generated" }, { "id": "top_business_flows_md_context_bag", "label": "Context Bag", "path": "machine/context-bags/top_business_flows.context-bag.json", "producerPath": "src/documentation/v4/buildContextBags.ts", "status": "generated" }, { "id": "top_business_flows_md_planning_debug", "label": "Planning Debug", "path": "debug/planning.debug.json", "producerPath": "src/documentation/v4/phase1Orientation.ts", "status": "generated" }, { "id": "top_business_flows_md_flow_catalog", "label": "Flow Catalog", "path": "machine/flow-catalog.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "top_business_flows_md_flow_selection", "label": "Flow Selection", "path": "machine/flow-selection.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "top_business_flows_md_business_map", "label": "Business Map", "path": "machine/business-map.json", "producerPath": "src/documentation/v4/phase3_5BusinessUnderstanding.ts", "status": "generated" }, { "id": "top_business_flows_md_index_output", "label": "Published Index", "path": "index.md", "producerPath": "src/documentation/v4/phase5Index.ts", "status": "generated" } ] }, { "id": "flow_0_nexusreader_web_program_cs", "name": "Program.cs", "category": "frontend-to-backend", "entryNodeId": "flow_file_nexusreader_web_program_cs_file_1", "nodeIds": [ "flow_file_nexusreader_web_program_cs_file_1", "flow_method_nexusreader_web_program_cs_program_top_level_29", "flow_type_nexusreader_web_program_cs_framework_34", "flow_type_nexusreader_web_program_cs_webplatformservice_47", "flow_type_nexusreader_web_program_cs_named_httpclient_58", "flow_type_nexusreader_web_program_cs_serveridentityservice_75", "flow_type_nexusreader_web_program_cs_addapplication_78", "flow_type_nexusreader_web_program_cs_addinfrastructure_iconfiguration_79", "flow_type_nexusreader_web_program_cs_registerservicesfromassemblies_81", "flow_type_nexusreader_web_program_cs_tokenlimithandler_87", "flow_type_nexusreader_web_program_cs_nexusreader_infrastructure_services_billingservice_93", "flow_type_nexusreader_web_program_cs_identity_ef_stores_107", "flow_method_nexusreader_web_program_cs_usehangfiredashboard_163", "flow_method_nexusreader_web_program_cs_database_initialization_and_seeding_with_retries_175", "flow_method_nexusreader_web_program_cs_configure_pipeline_and_run_225", "flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250", "flow_method_nexusreader_web_program_cs_knowledge_api_group_mappings_261", "flow_method_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_330", "flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355", "flow_method_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_367", "flow_method_nexusreader_web_program_cs_handlesubscriptionsuccess_410", "flow_method_nexusreader_web_program_cs_handlesubscriptioncancellation_434", "flow_method_nexusreader_web_program_cs_map_identity_api_mapgroup_identity_451", "flow_method_nexusreader_web_program_cs_identity_login_get_identity_login_google_453" ], "edgeIds": [ "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_program_top_level_29_invokes_29", "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates-condition_62", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250_invokes_250", "edge_flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250_flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_252_252_evaluates-condition_252", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledge_api_group_mappings_261_invokes_261", "edge_flow_method_nexusreader_web_program_cs_knowledge_api_group_mappings_261_flow_action_nexusreader_web_program_cs_knowledge_api_group_mappings_repository_read_267_267_invokes_267", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_330_invokes_330", "edge_flow_method_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_330_flow_action_nexusreader_web_program_cs_ingestebook_post_api_library_ingest_guard_clause_332_332_evaluates-condition_332", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355_invokes_355", "edge_flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_357_357_evaluates-condition_357", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_367_invokes_367", "edge_flow_method_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_367_flow_action_nexusreader_web_program_cs_stripewebhook_post_api_stripewebhook_await_373_373_invokes_373", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_handlesubscriptionsuccess_410_invokes_410", "edge_flow_method_nexusreader_web_program_cs_handlesubscriptionsuccess_410_flow_action_nexusreader_web_program_cs_handlesubscriptionsuccess_guard_clause_416_416_evaluates-condition_416", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_handlesubscriptioncancellation_434_invokes_434", "edge_flow_method_nexusreader_web_program_cs_handlesubscriptioncancellation_434_flow_action_nexusreader_web_program_cs_handlesubscriptioncancellation_guard_clause_439_439_evaluates-condition_439", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_map_identity_api_mapgroup_identity_451_invokes_451", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_identity_login_get_identity_login_google_453_invokes_453", "edge_flow_method_nexusreader_web_program_cs_identity_login_get_identity_login_google_453_flow_action_nexusreader_web_program_cs_identity_login_get_identity_login_google_return_460_460_returns_460", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_identity_callback_get_identity_callback_google_463_invokes_463", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_account_login_form_post_account_login_form_520_invokes_520", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_knowledgerequest_566_maps-dto_566", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_groundednessrequest_567_maps-dto_567", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_semanticsearchrequest_568_maps-dto_568", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_askquestionrequest_569_maps-dto_569", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_framework_34_registers-service_34", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_webplatformservice_47_registers-service_47", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_named_httpclient_58_registers-service_58", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_serveridentityservice_75_registers-service_75", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_addapplication_78_registers-service_78", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_addinfrastructure_iconfiguration_79_registers-service_79", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_registerservicesfromassemblies_81_registers-service_81", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_tokenlimithandler_87_registers-service_87", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_nexusreader_infrastructure_services_billingservice_93_registers-service_93", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_identity_ef_stores_107_registers-service_107", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_usehangfiredashboard_163_configures-pipeline_163", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_database_initialization_and_seeding_with_retries_175_configures-pipeline_175", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_configure_pipeline_and_run_225_configures-pipeline_225" ], "confidence": "high", "businessValue": 68, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 1 } ], "businessSignals": [ "trigger", "validation-decision" ], "scoreBreakdown": { "entrypointQuality": 25, "crossLayerDepth": 0, "businessSignals": 8, "evidenceStrength": 20, "contractCoverage": 15, "total": 68 }, "validationIssues": [], "recommendedDiagramKinds": [ "primary-runtime", "dependency-map", "class-diagram", "method-flow" ], "producedArtifacts": [ { "id": "top_business_flows_md_phase_inputs", "label": "Phase Inputs", "path": "machine/phase-inputs/business__top-business-flows.phase-inputs.json", "producerPath": "src/documentation/v4/phase4Generation.ts", "status": "generated" }, { "id": "top_business_flows_md_context_bag", "label": "Context Bag", "path": "machine/context-bags/top_business_flows.context-bag.json", "producerPath": "src/documentation/v4/buildContextBags.ts", "status": "generated" }, { "id": "top_business_flows_md_planning_debug", "label": "Planning Debug", "path": "debug/planning.debug.json", "producerPath": "src/documentation/v4/phase1Orientation.ts", "status": "generated" }, { "id": "top_business_flows_md_flow_catalog", "label": "Flow Catalog", "path": "machine/flow-catalog.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "top_business_flows_md_flow_selection", "label": "Flow Selection", "path": "machine/flow-selection.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "top_business_flows_md_business_map", "label": "Business Map", "path": "machine/business-map.json", "producerPath": "src/documentation/v4/phase3_5BusinessUnderstanding.ts", "status": "generated" }, { "id": "top_business_flows_md_index_output", "label": "Published Index", "path": "index.md", "producerPath": "src/documentation/v4/phase5Index.ts", "status": "generated" } ] }, { "id": "flow_1_nexusreader_web_client_program_cs", "name": "Program.cs", "category": "frontend-to-backend", "entryNodeId": "flow_file_nexusreader_web_client_program_cs_file_1", "nodeIds": [ "flow_file_nexusreader_web_client_program_cs_file_1", "flow_method_nexusreader_web_client_program_cs_program_top_level_15", "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "flow_type_nexusreader_web_client_program_cs_webstorageservice_19", "flow_type_nexusreader_web_client_program_cs_identityservice_32", "flow_type_nexusreader_web_client_program_cs_nexusreader_web_client_handlers_authenticationheaderhandler_40", "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "flow_type_nexusreader_web_client_program_cs_nexusreader_application_extension_55", "flow_method_nexusreader_web_client_program_cs_buildandrun_59", "flow_method_nexusreader_web_client_program_cs_createdbcontext_61", "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "flow_method_nexusreader_web_client_program_cs_generateasync_69", "flow_method_nexusreader_web_client_program_cs_getservice_71", "flow_method_nexusreader_web_client_program_cs_savecoverasync_byte_74", "flow_method_nexusreader_web_client_program_cs_savecoverasync_stream_74", "flow_method_nexusreader_web_client_program_cs_saveebookasync_byte_74", "flow_method_nexusreader_web_client_program_cs_saveebookasync_stream_74", "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "flow_method_nexusreader_web_client_program_cs_addauthor_84", "flow_method_nexusreader_web_client_program_cs_addebook_84", "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_84", "flow_method_nexusreader_web_client_program_cs_savechangesasync_84", "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84" ], "edgeIds": [ "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_program_top_level_15_invokes_15", "edge_flow_method_nexusreader_web_client_program_cs_program_top_level_15_flow_action_nexusreader_web_client_program_cs_program_top_level_await_59_59_invokes_59", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_createdbcontext_61_invokes_61", "edge_flow_method_nexusreader_web_client_program_cs_createdbcontext_61_flow_action_nexusreader_web_client_program_cs_createdbcontext_throw_63_63_invokes_63", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_generateasync_69_invokes_69", "edge_flow_method_nexusreader_web_client_program_cs_generateasync_69_flow_action_nexusreader_web_client_program_cs_generateasync_throw_70_70_invokes_70", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_getservice_71_invokes_71", "edge_flow_method_nexusreader_web_client_program_cs_getservice_71_flow_action_nexusreader_web_client_program_cs_getservice_return_71_71_returns_71", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_saveebookasync_byte_74_invokes_74", "edge_flow_method_nexusreader_web_client_program_cs_saveebookasync_byte_74_flow_action_nexusreader_web_client_program_cs_saveebookasync_byte_throw_78_78_invokes_78", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_saveebookasync_stream_74_invokes_74", "edge_flow_method_nexusreader_web_client_program_cs_saveebookasync_stream_74_flow_action_nexusreader_web_client_program_cs_saveebookasync_stream_throw_78_78_invokes_78", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_savecoverasync_byte_74_invokes_74", "edge_flow_method_nexusreader_web_client_program_cs_savecoverasync_byte_74_flow_action_nexusreader_web_client_program_cs_savecoverasync_byte_throw_78_78_invokes_78", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_savecoverasync_stream_74_invokes_74", "edge_flow_method_nexusreader_web_client_program_cs_savecoverasync_stream_74_flow_action_nexusreader_web_client_program_cs_savecoverasync_stream_throw_78_78_invokes_78", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_84_invokes_84", "edge_flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_84_flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88_invokes_88", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_addauthor_84_invokes_84", "edge_flow_method_nexusreader_web_client_program_cs_addauthor_84_flow_action_nexusreader_web_client_program_cs_addauthor_repository_read_88_88_invokes_88", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_addebook_84_invokes_84", "edge_flow_method_nexusreader_web_client_program_cs_addebook_84_flow_action_nexusreader_web_client_program_cs_addebook_repository_read_88_88_invokes_88", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_savechangesasync_84_invokes_84", "edge_flow_method_nexusreader_web_client_program_cs_savechangesasync_84_flow_action_nexusreader_web_client_program_cs_savechangesasync_repository_read_88_88_invokes_88", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61_defines-type_61", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66_defines-type_66", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74_defines-type_74", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84_defines-type_84", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94_defines-type_94", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers-service_18", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webstorageservice_19_registers-service_19", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_identityservice_32_registers-service_32", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusreader_web_client_handlers_authenticationheaderhandler_40_registers-service_40", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49_registers-service_49", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusreader_application_extension_55_registers-service_55", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_buildandrun_59_configures-pipeline_59" ], "confidence": "high", "businessValue": 68, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 1 } ], "businessSignals": [ "trigger", "validation-decision" ], "scoreBreakdown": { "entrypointQuality": 25, "crossLayerDepth": 0, "businessSignals": 8, "evidenceStrength": 20, "contractCoverage": 15, "total": 68 }, "validationIssues": [], "recommendedDiagramKinds": [ "primary-runtime", "dependency-map", "class-diagram", "method-flow" ], "producedArtifacts": [ { "id": "top_business_flows_md_phase_inputs", "label": "Phase Inputs", "path": "machine/phase-inputs/business__top-business-flows.phase-inputs.json", "producerPath": "src/documentation/v4/phase4Generation.ts", "status": "generated" }, { "id": "top_business_flows_md_context_bag", "label": "Context Bag", "path": "machine/context-bags/top_business_flows.context-bag.json", "producerPath": "src/documentation/v4/buildContextBags.ts", "status": "generated" }, { "id": "top_business_flows_md_planning_debug", "label": "Planning Debug", "path": "debug/planning.debug.json", "producerPath": "src/documentation/v4/phase1Orientation.ts", "status": "generated" }, { "id": "top_business_flows_md_flow_catalog", "label": "Flow Catalog", "path": "machine/flow-catalog.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "top_business_flows_md_flow_selection", "label": "Flow Selection", "path": "machine/flow-selection.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "top_business_flows_md_business_map", "label": "Business Map", "path": "machine/business-map.json", "producerPath": "src/documentation/v4/phase3_5BusinessUnderstanding.ts", "status": "generated" }, { "id": "top_business_flows_md_index_output", "label": "Published Index", "path": "index.md", "producerPath": "src/documentation/v4/phase5Index.ts", "status": "generated" } ] }, { "id": "xref_top_business_flows_md_knowledge_query_flow", "name": "Knowledge Query Flow", "category": "frontend-to-backend", "entryNodeId": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "nodeIds": [ "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35" ], "edgeIds": [ "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_invokes_12", "edge_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_invokes_14", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_invokes_59", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63_invokes_63", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines-type_10", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers-service_28", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers-service_29", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers-service_32", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33_registers-service_33", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35_registers-service_35", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38_registers-service_38", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41_registers-service_41", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42_registers-service_42", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43_registers-service_43", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_configures-pipeline_12" ], "confidence": "high", "businessValue": 68, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 1 } ], "businessSignals": [ "trigger", "validation-decision" ], "scoreBreakdown": { "entrypointQuality": 25, "crossLayerDepth": 0, "businessSignals": 8, "evidenceStrength": 20, "contractCoverage": 15, "total": 68 }, "validationIssues": [], "recommendedDiagramKinds": [ "primary-runtime", "control-flow", "dependency-map", "class-diagram", "method-flow" ], "producedArtifacts": [ { "id": "top_business_flows_md_phase_inputs", "label": "Phase Inputs", "path": "machine/phase-inputs/business__top-business-flows.phase-inputs.json", "producerPath": "src/documentation/v4/phase4Generation.ts", "status": "generated" }, { "id": "top_business_flows_md_context_bag", "label": "Context Bag", "path": "machine/context-bags/top_business_flows.context-bag.json", "producerPath": "src/documentation/v4/buildContextBags.ts", "status": "generated" }, { "id": "top_business_flows_md_planning_debug", "label": "Planning Debug", "path": "debug/planning.debug.json", "producerPath": "src/documentation/v4/phase1Orientation.ts", "status": "generated" }, { "id": "top_business_flows_md_flow_catalog", "label": "Flow Catalog", "path": "machine/flow-catalog.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "top_business_flows_md_flow_selection", "label": "Flow Selection", "path": "machine/flow-selection.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "top_business_flows_md_business_map", "label": "Business Map", "path": "machine/business-map.json", "producerPath": "src/documentation/v4/phase3_5BusinessUnderstanding.ts", "status": "generated" }, { "id": "top_business_flows_md_index_output", "label": "Published Index", "path": "index.md", "producerPath": "src/documentation/v4/phase5Index.ts", "status": "generated" } ] }, { "id": "xref_top_business_flows_md_ebook_ingest_flow", "name": "Ebook Ingest Flow", "category": "frontend-to-backend", "entryNodeId": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "nodeIds": [ "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35" ], "edgeIds": [ "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_invokes_12", "edge_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_invokes_14", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_invokes_59", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63_invokes_63", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines-type_10", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers-service_28", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers-service_29", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers-service_32", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33_registers-service_33", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35_registers-service_35", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38_registers-service_38", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41_registers-service_41", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42_registers-service_42", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43_registers-service_43", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_configures-pipeline_12" ], "confidence": "high", "businessValue": 68, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 1 } ], "businessSignals": [ "trigger", "validation-decision" ], "scoreBreakdown": { "entrypointQuality": 25, "crossLayerDepth": 0, "businessSignals": 8, "evidenceStrength": 20, "contractCoverage": 15, "total": 68 }, "validationIssues": [], "recommendedDiagramKinds": [ "primary-runtime", "control-flow", "dependency-map", "class-diagram", "method-flow" ], "producedArtifacts": [ { "id": "top_business_flows_md_phase_inputs", "label": "Phase Inputs", "path": "machine/phase-inputs/business__top-business-flows.phase-inputs.json", "producerPath": "src/documentation/v4/phase4Generation.ts", "status": "generated" }, { "id": "top_business_flows_md_context_bag", "label": "Context Bag", "path": "machine/context-bags/top_business_flows.context-bag.json", "producerPath": "src/documentation/v4/buildContextBags.ts", "status": "generated" }, { "id": "top_business_flows_md_planning_debug", "label": "Planning Debug", "path": "debug/planning.debug.json", "producerPath": "src/documentation/v4/phase1Orientation.ts", "status": "generated" }, { "id": "top_business_flows_md_flow_catalog", "label": "Flow Catalog", "path": "machine/flow-catalog.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "top_business_flows_md_flow_selection", "label": "Flow Selection", "path": "machine/flow-selection.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "top_business_flows_md_business_map", "label": "Business Map", "path": "machine/business-map.json", "producerPath": "src/documentation/v4/phase3_5BusinessUnderstanding.ts", "status": "generated" }, { "id": "top_business_flows_md_index_output", "label": "Published Index", "path": "index.md", "producerPath": "src/documentation/v4/phase5Index.ts", "status": "generated" } ] }, { "id": "xref_top_business_flows_md_user_authentication_sign_in_flow", "name": "User Authentication / Sign-in Flow", "category": "frontend-to-backend", "entryNodeId": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "nodeIds": [ "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35" ], "edgeIds": [ "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_invokes_12", "edge_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_invokes_14", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_invokes_59", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63_invokes_63", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines-type_10", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers-service_28", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers-service_29", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers-service_32", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33_registers-service_33", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35_registers-service_35", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38_registers-service_38", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41_registers-service_41", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42_registers-service_42", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43_registers-service_43", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_configures-pipeline_12" ], "confidence": "high", "businessValue": 68, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 1 } ], "businessSignals": [ "trigger", "validation-decision" ], "scoreBreakdown": { "entrypointQuality": 25, "crossLayerDepth": 0, "businessSignals": 8, "evidenceStrength": 20, "contractCoverage": 15, "total": 68 }, "validationIssues": [], "recommendedDiagramKinds": [ "primary-runtime", "control-flow", "dependency-map", "class-diagram", "method-flow" ], "producedArtifacts": [ { "id": "top_business_flows_md_phase_inputs", "label": "Phase Inputs", "path": "machine/phase-inputs/business__top-business-flows.phase-inputs.json", "producerPath": "src/documentation/v4/phase4Generation.ts", "status": "generated" }, { "id": "top_business_flows_md_context_bag", "label": "Context Bag", "path": "machine/context-bags/top_business_flows.context-bag.json", "producerPath": "src/documentation/v4/buildContextBags.ts", "status": "generated" }, { "id": "top_business_flows_md_planning_debug", "label": "Planning Debug", "path": "debug/planning.debug.json", "producerPath": "src/documentation/v4/phase1Orientation.ts", "status": "generated" }, { "id": "top_business_flows_md_flow_catalog", "label": "Flow Catalog", "path": "machine/flow-catalog.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "top_business_flows_md_flow_selection", "label": "Flow Selection", "path": "machine/flow-selection.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "top_business_flows_md_business_map", "label": "Business Map", "path": "machine/business-map.json", "producerPath": "src/documentation/v4/phase3_5BusinessUnderstanding.ts", "status": "generated" }, { "id": "top_business_flows_md_index_output", "label": "Published Index", "path": "index.md", "producerPath": "src/documentation/v4/phase5Index.ts", "status": "generated" } ] }, { "id": "xref_top_business_flows_md_pro_authorization_ai_token_check_flow", "name": "Pro Authorization / AI Token Check Flow", "category": "frontend-to-backend", "entryNodeId": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "nodeIds": [ "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35" ], "edgeIds": [ "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_invokes_12", "edge_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_invokes_14", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_invokes_59", "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63_invokes_63", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines-type_10", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers-service_28", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers-service_29", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers-service_32", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33_registers-service_33", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35_registers-service_35", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38_registers-service_38", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41_registers-service_41", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42_registers-service_42", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43_registers-service_43", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_configures-pipeline_12" ], "confidence": "high", "businessValue": 68, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 1 } ], "businessSignals": [ "trigger", "validation-decision" ], "scoreBreakdown": { "entrypointQuality": 25, "crossLayerDepth": 0, "businessSignals": 8, "evidenceStrength": 20, "contractCoverage": 15, "total": 68 }, "validationIssues": [], "recommendedDiagramKinds": [ "primary-runtime", "control-flow", "dependency-map", "class-diagram", "method-flow" ], "producedArtifacts": [ { "id": "top_business_flows_md_phase_inputs", "label": "Phase Inputs", "path": "machine/phase-inputs/business__top-business-flows.phase-inputs.json", "producerPath": "src/documentation/v4/phase4Generation.ts", "status": "generated" }, { "id": "top_business_flows_md_context_bag", "label": "Context Bag", "path": "machine/context-bags/top_business_flows.context-bag.json", "producerPath": "src/documentation/v4/buildContextBags.ts", "status": "generated" }, { "id": "top_business_flows_md_planning_debug", "label": "Planning Debug", "path": "debug/planning.debug.json", "producerPath": "src/documentation/v4/phase1Orientation.ts", "status": "generated" }, { "id": "top_business_flows_md_flow_catalog", "label": "Flow Catalog", "path": "machine/flow-catalog.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "top_business_flows_md_flow_selection", "label": "Flow Selection", "path": "machine/flow-selection.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "top_business_flows_md_business_map", "label": "Business Map", "path": "machine/business-map.json", "producerPath": "src/documentation/v4/phase3_5BusinessUnderstanding.ts", "status": "generated" }, { "id": "top_business_flows_md_index_output", "label": "Published Index", "path": "index.md", "producerPath": "src/documentation/v4/phase5Index.ts", "status": "generated" } ] } ] }, "testLinkMetadata": [] }, "generatedDiagrams": [ { "id": "dependency_map_graph", "kind": "dependency-map", "title": "Dependency and Model Map", "direction": "TD", "nodes": [ { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "kind": "service", "label": "MauiProgram", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "kind": "dependency", "label": "MauiProgram", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 10 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "kind": "dependency", "label": "MauiPlatformService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 28 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "kind": "dependency", "label": "MauiStorageService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 29 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "kind": "dependency", "label": "NexusAuthenticationStateProvider", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 32 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "kind": "dependency", "label": "NexusAuthenticationStateProvider (resolved)", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 33 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "kind": "dependency", "label": "AuthorizationCore", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 35 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "kind": "dependency", "label": "HttpClient", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 38 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "kind": "dependency", "label": "ThemeService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 41 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "kind": "dependency", "label": "FocusModeService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 42 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "kind": "dependency", "label": "QuizStateService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 43 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "kind": "dependency", "label": "ReaderNavigationService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 44 }, { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "kind": "dependency", "label": "ThrowingDbContextFactory", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 61 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "kind": "dependency", "label": "ThrowingEmbeddingGenerator", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 66 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "kind": "dependency", "label": "ThrowingBookStorageService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "kind": "dependency", "label": "ThrowingEbookRepository", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "kind": "dependency", "label": "ThrowingSyncBroadcaster", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 94 }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "kind": "dependency", "label": "WebPlatformService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18 }, { "id": "flow_type_nexusreader_web_client_program_cs_webstorageservice_19", "kind": "dependency", "label": "WebStorageService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 19 } ], "edges": [ { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines_type_10", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "semanticLabel": "model MauiProgram", "visibleLabel": "model MauiProgram", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "includeInMetadata": true, "payload": { "outputSummary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers_service_28", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "semanticLabel": "IPlatformService", "visibleLabel": "IPlatformService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "includeInMetadata": true, "payload": { "outputSummary": "Platform abstraction implemented by mobile-specific MauiPlatformService", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers_service_29", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "semanticLabel": "INativeStorageService", "visibleLabel": "INativeStorageService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "includeInMetadata": true, "payload": { "outputSummary": "Native storage implementation for MAUI", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers_service_32", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "semanticLabel": "NexusAuthenticationStateProvider", "visibleLabel": "NexusAuthenticationStateProvider", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "includeInMetadata": true, "payload": { "outputSummary": "Authentication state provider registered for Blazor auth", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33_registers_service_33", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "semanticLabel": "AuthenticationStateProvider", "visibleLabel": "AuthenticationStateProvider", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "includeInMetadata": true, "payload": { "outputSummary": "Registers the framework AuthenticationStateProvider to resolve the NexusAuthenticationStateProvider", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35_registers_service_35", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "semanticLabel": "Authorization", "visibleLabel": "Authorization", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "includeInMetadata": true, "payload": { "outputSummary": "Adds authorization core services", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38_registers_service_38", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "semanticLabel": "HttpClient", "visibleLabel": "HttpClient", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "includeInMetadata": true, "payload": { "outputSummary": "HttpClient with BaseAddress pointing to local dev backend (http://10.0.2.2:5000)", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41_registers_service_41", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "semanticLabel": "IThemeService", "visibleLabel": "IThemeService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "includeInMetadata": true, "payload": { "outputSummary": "UI theme management", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42_registers_service_42", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "semanticLabel": "IFocusModeService", "visibleLabel": "IFocusModeService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "includeInMetadata": true, "payload": { "outputSummary": "Focus mode UI behavior", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43_registers_service_43", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "semanticLabel": "IQuizStateService", "visibleLabel": "IQuizStateService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "includeInMetadata": true, "payload": { "outputSummary": "Quiz state tracking", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44_registers_service_44", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "semanticLabel": "IReaderNavigationService", "visibleLabel": "IReaderNavigationService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "includeInMetadata": true, "payload": { "outputSummary": "Reader navigation abstraction", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61_defines_type_61", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "semanticLabel": "model ThrowingDbContextFactory", "visibleLabel": "model ThrowingDbContextFactory", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 61, "includeInMetadata": true, "payload": { "outputSummary": "IDbContextFactory implementation that prevents EF DbContext usage in the WASM client by throwing.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66_defines_type_66", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "semanticLabel": "model ThrowingEmbeddingGenerator", "visibleLabel": "model ThrowingEmbeddingGenerator", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 66, "includeInMetadata": true, "payload": { "outputSummary": "IEmbeddingGenerator stub that throws on GenerateAsync to prevent embedding generation in WASM.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74_defines_type_74", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "semanticLabel": "model ThrowingBookStorageService", "visibleLabel": "model ThrowingBookStorageService", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "includeInMetadata": true, "payload": { "outputSummary": "IBookStorageService stub that throws for all file storage operations in the WASM client.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84_defines_type_84", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "semanticLabel": "model ThrowingEbookRepository", "visibleLabel": "model ThrowingEbookRepository", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "includeInMetadata": true, "payload": { "outputSummary": "IEbookRepository stub that throws for all repository operations to force use of server API.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94_defines_type_94", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "semanticLabel": "model ThrowingSyncBroadcaster", "visibleLabel": "model ThrowingSyncBroadcaster", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 94, "includeInMetadata": true, "payload": { "outputSummary": "ISyncBroadcaster stub that throws for real-time broadcasting operations in the WASM client.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers_service_18", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "semanticLabel": "IPlatformService", "visibleLabel": "IPlatformService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 18, "includeInMetadata": true, "payload": { "outputSummary": "Platform abstraction for browser environment", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webstorageservice_19_registers_service_19", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webstorageservice_19", "semanticLabel": "INativeStorageService", "visibleLabel": "INativeStorageService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 19, "includeInMetadata": true, "payload": { "outputSummary": "Browser storage implementation", "expandedLabel": "registers-service" } } ], "metadata": { "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ] }, "subgraphs": [] }, { "id": "startup_runtime_graph", "kind": "primary-runtime", "title": "Startup and Service Registration Flow", "direction": "TD", "nodes": [ { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "kind": "service", "label": "MauiProgram", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "kind": "method", "label": "CreateMauiApp", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 12 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "kind": "dependency", "label": "MauiPlatformService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 28 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "kind": "dependency", "label": "MauiStorageService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 29 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "kind": "dependency", "label": "NexusAuthenticationStateProvider", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 32 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "kind": "dependency", "label": "NexusAuthenticationStateProvider (resolved)", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 33 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "kind": "dependency", "label": "AuthorizationCore", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 35 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "kind": "dependency", "label": "HttpClient", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 38 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "kind": "dependency", "label": "ThemeService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 41 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "kind": "dependency", "label": "FocusModeService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 42 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "kind": "dependency", "label": "QuizStateService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 43 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "kind": "dependency", "label": "ReaderNavigationService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 44 }, { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1 }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "kind": "dependency", "label": "WebPlatformService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18 }, { "id": "flow_type_nexusreader_web_client_program_cs_webstorageservice_19", "kind": "dependency", "label": "WebStorageService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 19 }, { "id": "flow_type_nexusreader_web_client_program_cs_identityservice_32", "kind": "dependency", "label": "IdentityService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 32 }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusreader_web_client_handlers_authenticationheaderhandler_40", "kind": "dependency", "label": "NexusReader.Web.Client.Handlers.AuthenticationHeaderHandler", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 40 } ], "edges": [ { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers_service_28", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "semanticLabel": "IPlatformService", "visibleLabel": "IPlatformService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "includeInMetadata": true, "payload": { "outputSummary": "Platform abstraction implemented by mobile-specific MauiPlatformService", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers_service_29", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "semanticLabel": "INativeStorageService", "visibleLabel": "INativeStorageService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "includeInMetadata": true, "payload": { "outputSummary": "Native storage implementation for MAUI", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers_service_32", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "semanticLabel": "NexusAuthenticationStateProvider", "visibleLabel": "NexusAuthenticationStateProvider", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "includeInMetadata": true, "payload": { "outputSummary": "Authentication state provider registered for Blazor auth", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33_registers_service_33", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "semanticLabel": "AuthenticationStateProvider", "visibleLabel": "AuthenticationStateProvider", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "includeInMetadata": true, "payload": { "outputSummary": "Registers the framework AuthenticationStateProvider to resolve the NexusAuthenticationStateProvider", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35_registers_service_35", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "semanticLabel": "Authorization", "visibleLabel": "Authorization", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "includeInMetadata": true, "payload": { "outputSummary": "Adds authorization core services", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38_registers_service_38", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "semanticLabel": "HttpClient", "visibleLabel": "HttpClient", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "includeInMetadata": true, "payload": { "outputSummary": "HttpClient with BaseAddress pointing to local dev backend (http://10.0.2.2:5000)", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41_registers_service_41", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "semanticLabel": "IThemeService", "visibleLabel": "IThemeService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "includeInMetadata": true, "payload": { "outputSummary": "UI theme management", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42_registers_service_42", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "semanticLabel": "IFocusModeService", "visibleLabel": "IFocusModeService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "includeInMetadata": true, "payload": { "outputSummary": "Focus mode UI behavior", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43_registers_service_43", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "semanticLabel": "IQuizStateService", "visibleLabel": "IQuizStateService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "includeInMetadata": true, "payload": { "outputSummary": "Quiz state tracking", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44_registers_service_44", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "semanticLabel": "IReaderNavigationService", "visibleLabel": "IReaderNavigationService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "includeInMetadata": true, "payload": { "outputSummary": "Reader navigation abstraction", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_configures_pipeline_12", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "semanticLabel": "unknown", "visibleLabel": "unknown", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "includeInMetadata": true, "payload": { "outputSummary": "unknown", "expandedLabel": "configures-pipeline" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers_service_18", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "semanticLabel": "IPlatformService", "visibleLabel": "IPlatformService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 18, "includeInMetadata": true, "payload": { "outputSummary": "Platform abstraction for browser environment", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webstorageservice_19_registers_service_19", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webstorageservice_19", "semanticLabel": "INativeStorageService", "visibleLabel": "INativeStorageService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 19, "includeInMetadata": true, "payload": { "outputSummary": "Browser storage implementation", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_identityservice_32_registers_service_32", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_identityservice_32", "semanticLabel": "IIdentityService", "visibleLabel": "IIdentityService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 32, "includeInMetadata": true, "payload": { "outputSummary": "Client-side identity interactions", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusreader_web_client_handlers_authenticationheaderhandler_40_registers_service_40", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_nexusreader_web_client_handlers_authenticationheaderhandler_40", "semanticLabel": "NexusReader.Web.Client.Handlers.AuthenticationHeaderHandler", "visibleLabel": "NexusReader.Web.Client.Handlers.AuthenticationHeaderHandler", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 40, "includeInMetadata": true, "payload": { "outputSummary": "HTTP message handler registered for adding auth headers", "expandedLabel": "registers-service" } } ], "subgraphs": [ { "id": "flow_2_nexusreader_maui_mauiprogram_cs", "label": "MauiProgram" }, { "id": "flow_1_nexusreader_web_client_program_cs", "label": "Program.cs" }, { "id": "Node_xref_top_business_flows_md_knowledge_query_flow", "label": "Knowledge Query Flow" }, { "id": "Node_xref_top_business_flows_md_ebook_ingest_flow", "label": "Ebook Ingest Flow" }, { "id": "Node_xref_top_business_flows_md_user_authentication_sign_in_flow", "label": "User Authentication / Sign-in Flow" } ], "metadata": { "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ] } }, { "id": "primary_runtime_flow_2_nexusreader_maui_mauiprogram_cs", "kind": "primary-runtime", "title": "MauiProgram Flow", "direction": "TD", "nodes": [ { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "kind": "service", "label": "MauiProgram", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "kind": "method", "label": "CreateMauiApp", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 12 }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "kind": "step", "label": "Begins protected execution", "shape": "rect", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 14 }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "kind": "return", "label": "Build and return app", "shape": "stadium", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 57 }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "kind": "step", "label": "Handles exception path", "shape": "rect", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 59 }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "kind": "step", "label": "Throws exception", "shape": "rect", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 63 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "kind": "dependency", "label": "MauiProgram", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 10 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "kind": "dependency", "label": "MauiPlatformService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 28 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "kind": "dependency", "label": "MauiStorageService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 29 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "kind": "dependency", "label": "NexusAuthenticationStateProvider", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 32 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "kind": "dependency", "label": "NexusAuthenticationStateProvider (resolved)", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 33 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "kind": "dependency", "label": "AuthorizationCore", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 35 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "kind": "dependency", "label": "HttpClient", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 38 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "kind": "dependency", "label": "ThemeService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 41 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "kind": "dependency", "label": "FocusModeService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 42 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "kind": "dependency", "label": "QuizStateService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 43 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "kind": "dependency", "label": "ReaderNavigationService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 44 }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_web_program_cs_program_top_level_29", "kind": "method", "label": "Program (top-level)", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 29 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "kind": "step", "label": "Evaluates branch condition", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "kind": "step", "label": "Falls back to alternate path", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 125 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 126 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 127 } ], "edges": [ { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_invokes_12", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "semanticLabel": "CreateMauiApp", "visibleLabel": "CreateMauiApp", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "includeInMetadata": true, "payload": { "outputSummary": "Create and configure the MAUI app builder, register application and platform services, configure debugging tools in DEBUG, and build/return the app; catches startup exceptions and rethrows after logging.", "expandedLabel": "handles-route" } }, { "id": "edge_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_invokes_14", "from": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "semanticLabel": "Begins protected execution", "visibleLabel": "Begins protected execution", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 14, "includeInMetadata": true, "payload": { "outputSummary": "try", "expandedLabel": "invokes" } }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "semanticLabel": "Build and return app", "visibleLabel": "Build and return app", "relation": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "includeInMetadata": true, "payload": { "outputSummary": "return builder.Build()", "expandedLabel": "returns" } }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "semanticLabel": "Returns result", "visibleLabel": "Returns result", "relation": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "includeInMetadata": true, "payload": { "outputSummary": "return builder.Build();", "expandedLabel": "returns" } }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_invokes_59", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "semanticLabel": "handled exception", "visibleLabel": "handled exception", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 59, "includeInMetadata": true, "payload": { "outputSummary": "catch (Exception ex)", "expandedLabel": "invokes" } }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63_invokes_63", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "semanticLabel": "Throws exception", "visibleLabel": "Throws exception", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 63, "includeInMetadata": true, "payload": { "outputSummary": "throw;", "expandedLabel": "invokes" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines_type_10", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "semanticLabel": "model MauiProgram", "visibleLabel": "model MauiProgram", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "includeInMetadata": true, "payload": { "outputSummary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers_service_28", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "semanticLabel": "IPlatformService", "visibleLabel": "IPlatformService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "includeInMetadata": true, "payload": { "outputSummary": "Platform abstraction implemented by mobile-specific MauiPlatformService", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers_service_29", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "semanticLabel": "INativeStorageService", "visibleLabel": "INativeStorageService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "includeInMetadata": true, "payload": { "outputSummary": "Native storage implementation for MAUI", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers_service_32", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "semanticLabel": "NexusAuthenticationStateProvider", "visibleLabel": "NexusAuthenticationStateProvider", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "includeInMetadata": true, "payload": { "outputSummary": "Authentication state provider registered for Blazor auth", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33_registers_service_33", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "semanticLabel": "AuthenticationStateProvider", "visibleLabel": "AuthenticationStateProvider", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "includeInMetadata": true, "payload": { "outputSummary": "Registers the framework AuthenticationStateProvider to resolve the NexusAuthenticationStateProvider", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35_registers_service_35", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "semanticLabel": "Authorization", "visibleLabel": "Authorization", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "includeInMetadata": true, "payload": { "outputSummary": "Adds authorization core services", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38_registers_service_38", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "semanticLabel": "HttpClient", "visibleLabel": "HttpClient", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "includeInMetadata": true, "payload": { "outputSummary": "HttpClient with BaseAddress pointing to local dev backend (http://10.0.2.2:5000)", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41_registers_service_41", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "semanticLabel": "IThemeService", "visibleLabel": "IThemeService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "includeInMetadata": true, "payload": { "outputSummary": "UI theme management", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42_registers_service_42", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "semanticLabel": "IFocusModeService", "visibleLabel": "IFocusModeService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "includeInMetadata": true, "payload": { "outputSummary": "Focus mode UI behavior", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43_registers_service_43", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "semanticLabel": "IQuizStateService", "visibleLabel": "IQuizStateService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "includeInMetadata": true, "payload": { "outputSummary": "Quiz state tracking", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44_registers_service_44", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "semanticLabel": "IReaderNavigationService", "visibleLabel": "IReaderNavigationService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "includeInMetadata": true, "payload": { "outputSummary": "Reader navigation abstraction", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_configures_pipeline_12", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "semanticLabel": "unknown", "visibleLabel": "unknown", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "includeInMetadata": true, "payload": { "outputSummary": "unknown", "expandedLabel": "configures-pipeline" } }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_program_top_level_29_invokes_29", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_program_top_level_29", "semanticLabel": "Program (top-level)", "visibleLabel": "Program top-level", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 29, "includeInMetadata": true, "payload": { "outputSummary": "Configure DI, middleware, authentication/authorization, register endpoints and run the web host.", "expandedLabel": "handles-route" } }, { "id": "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates_condition_62", "from": "flow_method_nexusreader_web_program_cs_program_top_level_29", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "semanticLabel": "true / false", "visibleLabel": "true / false", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 62, "includeInMetadata": true, "payload": { "outputSummary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "expandedLabel": "evaluates-condition" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls_back_66", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "semanticLabel": "fallback", "visibleLabel": "fallback", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "includeInMetadata": true, "payload": { "outputSummary": "else", "expandedLabel": "falls-back" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_invokes_125", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 125, "includeInMetadata": true, "payload": { "outputSummary": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "expandedLabel": "invokes" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_invokes_126", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 126, "includeInMetadata": true, "payload": { "outputSummary": "context.Request.Path.StartsWithSegments(\"/identity\") ||", "expandedLabel": "invokes" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_invokes_127", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 127, "includeInMetadata": true, "payload": { "outputSummary": "context.Request.Headers[\"Accept\"].ToString().Contains(\"application/json\");", "expandedLabel": "invokes" } } ], "subgraphs": [ { "id": "flow_2_nexusreader_maui_mauiprogram_cs", "label": "MauiProgram" }, { "id": "flow_0_nexusreader_web_program_cs", "label": "Program.cs" }, { "id": "Node_xref_top_business_flows_md_knowledge_query_flow", "label": "Knowledge Query Flow" }, { "id": "Node_xref_top_business_flows_md_ebook_ingest_flow", "label": "Ebook Ingest Flow" }, { "id": "Node_xref_top_business_flows_md_user_authentication_sign_in_flow", "label": "User Authentication / Sign-in Flow" } ], "metadata": { "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ] } }, { "id": "control_flow_flow_2_nexusreader_maui_mauiprogram_cs", "kind": "control-flow", "title": "MauiProgram Execution Control Flow", "direction": "TD", "nodes": [ { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "kind": "service", "label": "MauiProgram", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "kind": "method", "label": "CreateMauiApp", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 12 }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "kind": "step", "label": "Begins protected execution", "shape": "rect", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 14 }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "kind": "return", "label": "Build and return app", "shape": "stadium", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 57 }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "kind": "step", "label": "Handles exception path", "shape": "rect", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 59 }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "kind": "step", "label": "Throws exception", "shape": "rect", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 63 }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_web_program_cs_program_top_level_29", "kind": "method", "label": "Program (top-level)", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 29 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "kind": "step", "label": "Evaluates branch condition", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "kind": "step", "label": "Falls back to alternate path", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 125 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 126 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 127 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "kind": "step", "label": "Evaluates branch condition", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 129 } ], "edges": [ { "id": "edge_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_invokes_14", "from": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "semanticLabel": "Begins protected execution", "visibleLabel": "Begins protected execution", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 14, "includeInMetadata": true, "payload": { "outputSummary": "try", "expandedLabel": "invokes" } }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "semanticLabel": "Build and return app", "visibleLabel": "Build and return app", "relation": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "includeInMetadata": true, "payload": { "outputSummary": "return builder.Build()", "expandedLabel": "returns" } }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "semanticLabel": "Returns result", "visibleLabel": "Returns result", "relation": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "includeInMetadata": true, "payload": { "outputSummary": "return builder.Build();", "expandedLabel": "returns" } }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_invokes_59", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "semanticLabel": "handled exception", "visibleLabel": "handled exception", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 59, "includeInMetadata": true, "payload": { "outputSummary": "catch (Exception ex)", "expandedLabel": "invokes" } }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63_invokes_63", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "semanticLabel": "Throws exception", "visibleLabel": "Throws exception", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 63, "includeInMetadata": true, "payload": { "outputSummary": "throw;", "expandedLabel": "invokes" } }, { "id": "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates_condition_62", "from": "flow_method_nexusreader_web_program_cs_program_top_level_29", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "semanticLabel": "true / false", "visibleLabel": "true / false", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 62, "includeInMetadata": true, "payload": { "outputSummary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "expandedLabel": "evaluates-condition" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls_back_66", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "semanticLabel": "fallback", "visibleLabel": "fallback", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "includeInMetadata": true, "payload": { "outputSummary": "else", "expandedLabel": "falls-back" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_invokes_125", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 125, "includeInMetadata": true, "payload": { "outputSummary": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "expandedLabel": "invokes" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_invokes_126", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 126, "includeInMetadata": true, "payload": { "outputSummary": "context.Request.Path.StartsWithSegments(\"/identity\") ||", "expandedLabel": "invokes" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_invokes_127", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 127, "includeInMetadata": true, "payload": { "outputSummary": "context.Request.Headers[\"Accept\"].ToString().Contains(\"application/json\");", "expandedLabel": "invokes" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129_evaluates_condition_129", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "semanticLabel": "true / false", "visibleLabel": "true / false", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 129, "includeInMetadata": true, "payload": { "outputSummary": "if (isApiRequest)", "expandedLabel": "evaluates-condition" } } ], "subgraphs": [ { "id": "NexusReader_Maui_MauiProgram", "label": "MauiProgram" }, { "id": "NexusReader_Web_Program", "label": "Program" } ], "metadata": { "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ] } }, { "id": "contracts_flow_2_nexusreader_maui_mauiprogram_cs", "kind": "class-diagram", "title": "MauiProgram Contracts and Entities", "direction": "LR", "nodes": [ { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "kind": "service", "label": "MauiProgram", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "kind": "dependency", "label": "MauiProgram", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 10 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "kind": "dependency", "label": "MauiPlatformService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 28 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "kind": "dependency", "label": "MauiStorageService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 29 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "kind": "dependency", "label": "NexusAuthenticationStateProvider", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 32 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "kind": "dependency", "label": "NexusAuthenticationStateProvider (resolved)", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 33 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "kind": "dependency", "label": "AuthorizationCore", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 35 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "kind": "dependency", "label": "HttpClient", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 38 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "kind": "dependency", "label": "ThemeService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 41 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "kind": "dependency", "label": "FocusModeService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 42 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "kind": "dependency", "label": "QuizStateService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 43 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "kind": "dependency", "label": "ReaderNavigationService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 44 }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1 }, { "id": "flow_type_nexusreader_web_program_cs_knowledgerequest_566", "kind": "dependency", "label": "KnowledgeRequest", "shape": "doc", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 566 }, { "id": "flow_type_nexusreader_web_program_cs_groundednessrequest_567", "kind": "dependency", "label": "GroundednessRequest", "shape": "doc", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 567 }, { "id": "flow_type_nexusreader_web_program_cs_semanticsearchrequest_568", "kind": "dependency", "label": "SemanticSearchRequest", "shape": "doc", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 568 }, { "id": "flow_type_nexusreader_web_program_cs_askquestionrequest_569", "kind": "dependency", "label": "AskQuestionRequest", "shape": "doc", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 569 } ], "edges": [ { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines_type_10", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "semanticLabel": "model MauiProgram", "visibleLabel": "model MauiProgram", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "includeInMetadata": true, "payload": { "outputSummary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_knowledgerequest_566_maps_dto_566", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_knowledgerequest_566", "semanticLabel": "dto KnowledgeRequest", "visibleLabel": "dto KnowledgeRequest", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 566, "includeInMetadata": true, "payload": { "outputSummary": "DTO for knowledge-related API calls containing input text and optional ebook id.", "expandedLabel": "maps-dto" } }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_groundednessrequest_567_maps_dto_567", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_groundednessrequest_567", "semanticLabel": "dto GroundednessRequest", "visibleLabel": "dto GroundednessRequest", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 567, "includeInMetadata": true, "payload": { "outputSummary": "DTO for verifying groundedness of an answer against context.", "expandedLabel": "maps-dto" } }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_semanticsearchrequest_568_maps_dto_568", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_semanticsearchrequest_568", "semanticLabel": "dto SemanticSearchRequest", "visibleLabel": "dto SemanticSearchRequest", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 568, "includeInMetadata": true, "payload": { "outputSummary": "DTO for semantic search requests.", "expandedLabel": "maps-dto" } }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_askquestionrequest_569_maps_dto_569", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_askquestionrequest_569", "semanticLabel": "dto AskQuestionRequest", "visibleLabel": "dto AskQuestionRequest", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 569, "includeInMetadata": true, "payload": { "outputSummary": "DTO for asking a question against knowledge with optional ebook scope and limit.", "expandedLabel": "maps-dto" } } ], "metadata": { "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ], "previewCompatibility": { "preferredSurface": "two-d", "fallback": "open-2d-preview", "reason": "class-diagram is preserved for 2D Mermaid rendering while 3D preview stays flowchart-only." } }, "subgraphs": [] }, { "id": "layer_flow_2_nexusreader_maui_mauiprogram_cs", "kind": "dependency-map", "title": "MauiProgram Layer View", "direction": "LR", "nodes": [ { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "kind": "service", "label": "MauiProgram", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "subgraphId": "layer_unknown" }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "kind": "step", "label": "Begins protected execution", "shape": "rect", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 14, "subgraphId": "layer_unknown" }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "kind": "return", "label": "Build and return app", "shape": "stadium", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "subgraphId": "layer_unknown" }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "kind": "step", "label": "Handles exception path", "shape": "rect", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 59, "subgraphId": "layer_unknown" }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "kind": "step", "label": "Throws exception", "shape": "rect", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 63, "subgraphId": "layer_unknown" }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "kind": "dependency", "label": "MauiProgram", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "subgraphId": "layer_unknown" }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "kind": "dependency", "label": "MauiPlatformService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "subgraphId": "layer_unknown" }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "kind": "dependency", "label": "MauiStorageService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "subgraphId": "layer_unknown" }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "kind": "dependency", "label": "NexusAuthenticationStateProvider", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "subgraphId": "layer_unknown" }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "kind": "dependency", "label": "NexusAuthenticationStateProvider (resolved)", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "subgraphId": "layer_unknown" }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "kind": "dependency", "label": "AuthorizationCore", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "subgraphId": "layer_unknown" }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "kind": "dependency", "label": "HttpClient", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "subgraphId": "layer_unknown" }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "kind": "dependency", "label": "ThemeService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "subgraphId": "layer_unknown" }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "kind": "dependency", "label": "FocusModeService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "subgraphId": "layer_unknown" }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "kind": "dependency", "label": "QuizStateService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "subgraphId": "layer_unknown" }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "kind": "dependency", "label": "ReaderNavigationService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "subgraphId": "layer_unknown" }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1, "subgraphId": "layer_application" }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "kind": "step", "label": "Evaluates branch condition", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62, "subgraphId": "layer_application" } ], "edges": [ { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "semanticLabel": "Build and return app", "visibleLabel": "Build and return app", "relation": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "includeInMetadata": true, "payload": { "outputSummary": "return builder.Build()", "expandedLabel": "returns" } }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "semanticLabel": "Returns result", "visibleLabel": "Returns result", "relation": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "includeInMetadata": true, "payload": { "outputSummary": "return builder.Build();", "expandedLabel": "returns" } }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_invokes_59", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "semanticLabel": "handled exception", "visibleLabel": "handled exception", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 59, "includeInMetadata": true, "payload": { "outputSummary": "catch (Exception ex)", "expandedLabel": "invokes" } }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63_invokes_63", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_catch_59_59", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_throw_63_63", "semanticLabel": "Throws exception", "visibleLabel": "Throws exception", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 63, "includeInMetadata": true, "payload": { "outputSummary": "throw;", "expandedLabel": "invokes" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines_type_10", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "semanticLabel": "model MauiProgram", "visibleLabel": "model MauiProgram", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "includeInMetadata": true, "payload": { "outputSummary": "Static bootstrap helper class that exposes CreateMauiApp used to initialize the MAUI app.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers_service_28", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "semanticLabel": "IPlatformService", "visibleLabel": "IPlatformService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "includeInMetadata": true, "payload": { "outputSummary": "Platform abstraction implemented by mobile-specific MauiPlatformService", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers_service_29", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "semanticLabel": "INativeStorageService", "visibleLabel": "INativeStorageService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "includeInMetadata": true, "payload": { "outputSummary": "Native storage implementation for MAUI", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers_service_32", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "semanticLabel": "NexusAuthenticationStateProvider", "visibleLabel": "NexusAuthenticationStateProvider", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "includeInMetadata": true, "payload": { "outputSummary": "Authentication state provider registered for Blazor auth", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33_registers_service_33", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_resolved_33", "semanticLabel": "AuthenticationStateProvider", "visibleLabel": "AuthenticationStateProvider", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "includeInMetadata": true, "payload": { "outputSummary": "Registers the framework AuthenticationStateProvider to resolve the NexusAuthenticationStateProvider", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35_registers_service_35", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_authorizationcore_35", "semanticLabel": "Authorization", "visibleLabel": "Authorization", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 35, "includeInMetadata": true, "payload": { "outputSummary": "Adds authorization core services", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38_registers_service_38", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_38", "semanticLabel": "HttpClient", "visibleLabel": "HttpClient", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "includeInMetadata": true, "payload": { "outputSummary": "HttpClient with BaseAddress pointing to local dev backend (http://10.0.2.2:5000)", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41_registers_service_41", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_41", "semanticLabel": "IThemeService", "visibleLabel": "IThemeService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 41, "includeInMetadata": true, "payload": { "outputSummary": "UI theme management", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42_registers_service_42", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_focusmodeservice_42", "semanticLabel": "IFocusModeService", "visibleLabel": "IFocusModeService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 42, "includeInMetadata": true, "payload": { "outputSummary": "Focus mode UI behavior", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43_registers_service_43", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_quizstateservice_43", "semanticLabel": "IQuizStateService", "visibleLabel": "IQuizStateService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 43, "includeInMetadata": true, "payload": { "outputSummary": "Quiz state tracking", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44_registers_service_44", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_readernavigationservice_44", "semanticLabel": "IReaderNavigationService", "visibleLabel": "IReaderNavigationService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 44, "includeInMetadata": true, "payload": { "outputSummary": "Reader navigation abstraction", "expandedLabel": "registers-service" } } ], "subgraphs": [ { "id": "layer_unknown", "label": "unknown" }, { "id": "layer_application", "label": "application" } ], "metadata": { "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ] } }, { "id": "failure_flow_2_nexusreader_maui_mauiprogram_cs", "kind": "control-flow", "title": "MauiProgram Guardrails and Failure Paths", "direction": "TD", "nodes": [ { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "kind": "step", "label": "Begins protected execution", "shape": "rect", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 14 }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "kind": "return", "label": "Build and return app", "shape": "stadium", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 57 }, { "id": "flow_method_nexusreader_web_program_cs_program_top_level_29", "kind": "method", "label": "Program (top-level)", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 29 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "kind": "step", "label": "Evaluates branch condition", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "kind": "step", "label": "Falls back to alternate path", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 127 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "kind": "step", "label": "Evaluates branch condition", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 129 } ], "edges": [ { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "semanticLabel": "Build and return app", "visibleLabel": "Build and return app", "relation": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "includeInMetadata": true, "payload": { "outputSummary": "return builder.Build()", "expandedLabel": "returns" } }, { "id": "edge_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "from": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "semanticLabel": "Returns result", "visibleLabel": "Returns result", "relation": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "includeInMetadata": true, "payload": { "outputSummary": "return builder.Build();", "expandedLabel": "returns" } }, { "id": "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates_condition_62", "from": "flow_method_nexusreader_web_program_cs_program_top_level_29", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "semanticLabel": "true / false", "visibleLabel": "true / false", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 62, "includeInMetadata": true, "payload": { "outputSummary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "expandedLabel": "evaluates-condition" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls_back_66", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "semanticLabel": "fallback", "visibleLabel": "fallback", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "includeInMetadata": true, "payload": { "outputSummary": "else", "expandedLabel": "falls-back" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129_evaluates_condition_129", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "semanticLabel": "true / false", "visibleLabel": "true / false", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 129, "includeInMetadata": true, "payload": { "outputSummary": "if (isApiRequest)", "expandedLabel": "evaluates-condition" } } ], "subgraphs": [ { "id": "NexusReader_Web_Program", "label": "Program" } ], "metadata": { "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ], "warnings": [] } }, { "id": "method_flows_graph", "kind": "method-flow", "title": "Method Flow Details", "direction": "TD", "nodes": [ { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "kind": "service", "label": "MauiProgram", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "kind": "method", "label": "CreateMauiApp", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 12 }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "kind": "step", "label": "Begins protected execution", "shape": "rect", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 14 }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250", "kind": "method", "label": "GetEpubContent (GET /api/epub/{ebookId}/{index})", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 250 }, { "id": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_252_252", "kind": "step", "label": "Extract userId", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 252 }, { "id": "flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355", "kind": "method", "label": "GetMyEbooks (GET /api/library/books)", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 355 }, { "id": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_357_357", "kind": "step", "label": "Ensure authenticated user", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 357 }, { "id": "flow_file_nexusreader_application_security_authorization_prouserhandler_cs_file_1", "kind": "dependency", "label": "ProUserHandler", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20", "kind": "method", "label": "HandleRequirementAsync", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 20 }, { "id": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_24_24", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 24 }, { "id": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "kind": "dependency", "label": "AuthenticationHeaderHandler", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "kind": "method", "label": "SendAsync", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27 }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27", "kind": "step", "label": "Calls external dependency", "shape": "rect", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27 }, { "id": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "kind": "method", "label": "CloneHttpRequestMessageAsync", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 112 }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119", "kind": "step", "label": "Copy content if present", "shape": "diamond", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 119 } ], "edges": [ { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_invokes_12", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "semanticLabel": "CreateMauiApp", "visibleLabel": "CreateMauiApp", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "includeInMetadata": true, "payload": { "outputSummary": "Create and configure the MAUI app builder, register application and platform services, configure debugging tools in DEBUG, and build/return the app; catches startup exceptions and rethrows after logging.", "expandedLabel": "handles-route" } }, { "id": "edge_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14_invokes_14", "from": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_try_14_14", "semanticLabel": "Begins protected execution", "visibleLabel": "Begins protected execution", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 14, "includeInMetadata": true, "payload": { "outputSummary": "try", "expandedLabel": "invokes" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_configures_pipeline_12", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "semanticLabel": "unknown", "visibleLabel": "unknown", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "includeInMetadata": true, "payload": { "outputSummary": "unknown", "expandedLabel": "configures-pipeline" } }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250_invokes_250", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250", "semanticLabel": "GetEpubContent (GET /api/epub/{ebookId}/{index})", "visibleLabel": "GetEpubContent GET / api / epub / ebookId / index", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 250, "includeInMetadata": true, "payload": { "outputSummary": "Return EPUB page content for an ebook index for the current user.", "expandedLabel": "handles-route" } }, { "id": "edge_flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250_flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_252_252_evaluates_condition_252", "from": "flow_method_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_250", "to": "flow_action_nexusreader_web_program_cs_getepubcontent_get_api_epub_ebookid_index_guard_clause_252_252", "semanticLabel": "continue", "visibleLabel": "continue", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 252, "includeInMetadata": true, "payload": { "outputSummary": "var userId = user.FindFirstValue(ClaimTypes.NameIdentifier)", "expandedLabel": "evaluates-condition" } }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355_invokes_355", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355", "semanticLabel": "GetMyEbooks (GET /api/library/books)", "visibleLabel": "GetMyEbooks GET / api / library / books", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 355, "includeInMetadata": true, "payload": { "outputSummary": "Return list of ebooks for the authenticated user via a GetMyEbooksQuery.", "expandedLabel": "handles-route" } }, { "id": "edge_flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355_flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_357_357_evaluates_condition_357", "from": "flow_method_nexusreader_web_program_cs_getmyebooks_get_api_library_books_355", "to": "flow_action_nexusreader_web_program_cs_getmyebooks_get_api_library_books_guard_clause_357_357", "semanticLabel": "Unauthorized / continue", "visibleLabel": "Unauthorized / continue", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 357, "includeInMetadata": true, "payload": { "outputSummary": "Return Unauthorized if missing", "expandedLabel": "evaluates-condition" } }, { "id": "edge_flow_file_nexusreader_application_security_authorization_prouserhandler_cs_file_1_flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20_invokes_20", "from": "flow_file_nexusreader_application_security_authorization_prouserhandler_cs_file_1", "to": "flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20", "semanticLabel": "HandleRequirementAsync", "visibleLabel": "HandleRequirementAsync", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 20, "includeInMetadata": true, "payload": { "outputSummary": "Core authorization logic: loads the current user from the DB and grants the requirement when the user has unlimited tokens or remaining AI token quota.", "expandedLabel": "invokes" } }, { "id": "edge_flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20_flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_24_24_invokes_24", "from": "flow_method_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_20", "to": "flow_action_nexusreader_application_security_authorization_prouserhandler_cs_handlerequirementasync_repository_read_24_24", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Security/Authorization/ProUserHandler.cs", "sourceLine": 24, "includeInMetadata": true, "payload": { "outputSummary": "var userId = context.User.FindFirstValue(ClaimTypes.NameIdentifier);", "expandedLabel": "invokes" } }, { "id": "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_invokes_27", "from": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "to": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "semanticLabel": "SendAsync", "visibleLabel": "SendAsync", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27, "includeInMetadata": true, "payload": { "outputSummary": "Intercepts outgoing HTTP requests to add a Bearer token for trusted origins, forwards the request, and on 401 attempts a thread-safe token refresh and optionally retries the request with the new token.", "expandedLabel": "invokes" } }, { "id": "edge_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27_invokes_27", "from": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27", "semanticLabel": "Calls external dependency", "visibleLabel": "Calls external dependency", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27, "includeInMetadata": true, "payload": { "outputSummary": "protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)", "expandedLabel": "invokes" } }, { "id": "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112_invokes_112", "from": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "to": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "semanticLabel": "CloneHttpRequestMessageAsync", "visibleLabel": "CloneHttpRequestMessageAsync", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 112, "includeInMetadata": true, "payload": { "outputSummary": "Creates a deep clone of an HttpRequestMessage (including content stream and headers) suitable for resending.", "expandedLabel": "invokes" } }, { "id": "edge_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119_evaluates_condition_119", "from": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119", "semanticLabel": "copy-content / no-content", "visibleLabel": "copy-content / no-content", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 119, "includeInMetadata": true, "payload": { "outputSummary": "Copy content if present", "expandedLabel": "evaluates-condition" } } ], "subgraphs": [ { "id": "NexusReader_Maui_MauiProgram", "label": "MauiProgram" }, { "id": "NexusReader_Web_Program", "label": "Program" }, { "id": "NexusReader_Application_Security_Authorization_ProUserHandler", "label": "ProUserHandler" }, { "id": "NexusReader_Web_Client_Handlers_AuthenticationHeaderHandler", "label": "AuthenticationHeaderHandler" } ], "metadata": { "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DTOs/User/AuthorDto.cs", "NexusReader.Application/Security/Authorization/ProUserHandler.cs", "NexusReader.Application/Security/Authorization/ProUserRequirement.cs", "NexusReader.Domain/Entities/Author.cs", "NexusReader.UI.Shared/Layout/AuthLayout.razor", "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.UI.Shared/Pages/Account/Login.razor", "NexusReader.UI.Shared/Pages/Account/Profile.razor", "NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor", "NexusReader.UI.Shared/Pages/Account/Register.razor", "NexusReader.Application/Abstractions/Messaging/ICommand.cs", "NexusReader.Application/Abstractions/Messaging/ICommandHandler.cs", "NexusReader.Application/Abstractions/Messaging/IQuery.cs" ] } } ] }