Files
Nexus.Reader/src/.documentation/business/top-business-flows.meta.json
T
2026-05-25 14:02:56 +02:00

30951 lines
1.3 MiB
Plaintext

{
"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<string>"
},
{
"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<Author?>"
},
{
"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<AppDbContext>) -> 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<HttpResponseMessage>"
},
{
"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<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)",
"responsibility": "protected override async Task<HttpResponseMessage> 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<HttpResponseMessage>"
},
{
"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<HttpRequestMessage>"
},
{
"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<HttpResponseMessage> 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<TResponse>",
"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<TCommand>",
"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<TCommand, TResponse>",
"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<TResponse>",
"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<TResponse>",
"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<AppDbContext>",
"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<TResponse>",
"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<TCommand>",
"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<TCommand, TResponse>",
"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<TResponse>",
"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<HttpResponseMessage> 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"
]
}
}
]
}