From 7735f2a2b27a7e3eaf7f90c6bc1b413992168a03 Mon Sep 17 00:00:00 2001 From: Taylor Marvin Date: Sat, 28 Mar 2026 23:43:11 -0700 Subject: [PATCH 1/2] continued wip --- .vscode/tasks.json | 339 +- Directory.Packages.props | 12 +- src/Installer/Msi/Agent/packages.lock.json | 36 +- .../Msi/CustomActions/packages.lock.json | 212 +- src/Installer/Msi/Server/packages.lock.json | 36 +- src/Test/Werkr.Tests.Agent/packages.lock.json | 3434 ++++++++--------- .../Unit/Audit/AuditEventTypeRegistryTests.cs | 13 +- .../ConfigurationResolutionServiceTests.cs | 1 + .../Credentials/CredentialResolverTests.cs | 32 +- .../Credentials/CredentialServiceTests.cs | 1 + .../Unit/Tasks/TaskServiceTests.cs | 1 + .../Unit/Workflows/WorkflowServiceTests.cs | 1 + src/Test/Werkr.Tests.Data/packages.lock.json | 2380 ++++++------ .../Werkr.Tests.Server/packages.lock.json | 2652 ++++++------- src/Test/Werkr.Tests/ActionRegistryTests.cs | 6 +- .../Werkr.Tests/ScheduleIntegrationTests.cs | 4 +- src/Test/Werkr.Tests/WebTests.cs | 6 +- src/Test/Werkr.Tests/packages.lock.json | 2734 ++++++------- .../AgentConfigurationProvider.cs | 3 +- src/Werkr.Agent/Operators/ActionOperator.cs | 2 +- .../Scheduling/ScheduleEvaluatorService.cs | 10 +- src/Werkr.Agent/packages.lock.json | 56 +- src/Werkr.Api/Endpoints/AgentEndpoints.cs | 4 +- src/Werkr.Api/Endpoints/AuditEndpoints.cs | 10 + src/Werkr.Api/Endpoints/StatusEndpoints.cs | 8 +- src/Werkr.Api/Endpoints/WorkflowEndpoints.cs | 71 +- .../AgentBearerTokenInterceptor.cs | 10 +- src/Werkr.Api/Program.cs | 96 +- src/Werkr.Api/packages.lock.json | 64 +- src/Werkr.AppHost/Werkr.AppHost.csproj | 2 +- src/Werkr.AppHost/packages.lock.json | 399 +- .../Models/Actions/ActionRegistry.cs | 6 - .../Models/Actions/ForEachParameters.cs | 7 - src/Werkr.Common/packages.lock.json | 20 +- src/Werkr.Core/Audit/AuditService.cs | 10 + src/Werkr.Core/Audit/IAuditService.cs | 5 + src/Werkr.Core/Tasks/TaskVersionService.cs | 8 +- .../Triggers/TriggerVersionService.cs | 8 +- .../Workflows/WorkflowVersionService.cs | 8 +- src/Werkr.Core/packages.lock.json | 22 +- ....cs => 20260329063536_Initial.Designer.cs} | 2 +- ...9_Initial.cs => 20260329063536_Initial.cs} | 4 +- ....cs => 20260329063555_Initial.Designer.cs} | 2 +- ...0_Initial.cs => 20260329063555_Initial.cs} | 4 +- src/Werkr.Data.Identity/packages.lock.json | 20 +- .../Postgres/20260323003632_Initial.cs | 2033 ---------- ....cs => 20260329063424_Initial.Designer.cs} | 3 +- .../Postgres/20260329063424_Initial.cs | 1943 ++++++++++ .../PostgresWerkrDbContextModelSnapshot.cs | 1 + .../Sqlite/20260323003652_Initial.cs | 1789 --------- ....cs => 20260329063451_Initial.Designer.cs} | 3 +- .../Sqlite/20260329063451_Initial.cs | 1699 ++++++++ .../SqliteWerkrDbContextModelSnapshot.cs | 1 + src/Werkr.Data/Seeding/ConfigurationSeeder.cs | 36 +- src/Werkr.Data/WerkrDbContext.cs | 49 +- src/Werkr.Data/packages.lock.json | 22 +- .../Pages/Account/ChangePassword.razor | 3 +- .../Pages/Account/Manage/Index.razor | 2 +- .../Components/Pages/Account/Manage/Mfa.razor | 3 +- .../Components/Pages/Admin/CreateUser.razor | 2 +- .../Components/Pages/Admin/EditUser.razor | 4 +- .../Components/Pages/Admin/Users.razor | 2 +- .../Components/Pages/AgentDetail.razor | 2 - .../Components/Pages/Agents/Index.razor | 2 +- .../Components/Pages/ApiKeys.razor | 2 +- .../Components/Pages/Dashboard/Calendar.razor | 2 +- .../Components/Pages/Dashboard/TaskList.razor | 2 +- .../Pages/HolidayCalendars/Create.razor | 1 - .../Pages/HolidayCalendars/Detail.razor | 2 - .../Pages/HolidayCalendars/Edit.razor | 2 - .../Pages/HolidayCalendars/Index.razor | 2 +- src/Werkr.Server/Components/Pages/Home.razor | 2 +- .../Components/Pages/Jobs/Detail.razor | 2 +- .../Components/Pages/Jobs/Index.razor | 2 +- .../Components/Pages/Reporting/AuditLog.razor | 13 +- .../Components/Pages/Schedules/Index.razor | 4 +- .../Components/Pages/Settings.razor | 9 +- .../Components/Pages/Tasks/Create.razor | 1 - .../Components/Pages/Tasks/Edit.razor | 3 +- .../Components/Pages/Tasks/Index.razor | 4 +- .../Pages/Tasks/TaskVersionDiff.razor | 2 - .../Components/Pages/Tasks/ViewVersion.razor | 2 - .../Pages/Triggers/EditFileMonitor.razor | 2 +- .../Pages/Triggers/FileMonitors.razor | 2 +- .../Services/ApiServiceAccessor.cs | 20 + src/Werkr.Server/packages.lock.json | 70 +- src/Werkr.ServiceDefaults/packages.lock.json | 32 +- 87 files changed, 10270 insertions(+), 10273 deletions(-) delete mode 100644 src/Werkr.Common/Models/Actions/ForEachParameters.cs rename src/Werkr.Data.Identity/Migrations/Postgres/{20260322224339_Initial.Designer.cs => 20260329063536_Initial.Designer.cs} (99%) rename src/Werkr.Data.Identity/Migrations/Postgres/{20260322224339_Initial.cs => 20260329063536_Initial.cs} (99%) rename src/Werkr.Data.Identity/Migrations/Sqlite/{20260322224400_Initial.Designer.cs => 20260329063555_Initial.Designer.cs} (99%) rename src/Werkr.Data.Identity/Migrations/Sqlite/{20260322224400_Initial.cs => 20260329063555_Initial.cs} (99%) delete mode 100644 src/Werkr.Data/Migrations/Postgres/20260323003632_Initial.cs rename src/Werkr.Data/Migrations/Postgres/{20260323003632_Initial.Designer.cs => 20260329063424_Initial.Designer.cs} (99%) create mode 100644 src/Werkr.Data/Migrations/Postgres/20260329063424_Initial.cs delete mode 100644 src/Werkr.Data/Migrations/Sqlite/20260323003652_Initial.cs rename src/Werkr.Data/Migrations/Sqlite/{20260323003652_Initial.Designer.cs => 20260329063451_Initial.Designer.cs} (99%) create mode 100644 src/Werkr.Data/Migrations/Sqlite/20260329063451_Initial.cs diff --git a/.vscode/tasks.json b/.vscode/tasks.json index b45e6b3..7a51d87 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -4,13 +4,14 @@ { "id": "migrationName", "type": "promptString", - "description": "Name for the EF Core migration", + "description": "Name for the EF Core migration (PascalCase, e.g. AddWorkflowTable)", "default": "migration" } ], "tasks": [ { "label": "verify:restore", + "detail": "Restore all NuGet packages for the solution. Run after pulling changes or editing .csproj/.props files. No external dependencies.", "type": "process", "command": "pwsh", "args": [ @@ -30,6 +31,7 @@ }, { "label": "verify:build", + "detail": "Build the entire solution (all projects). Runs an implicit restore. Use to validate that all code compiles cleanly. Output is suppressed unless errors occur.", "type": "process", "command": "pwsh", "args": [ @@ -39,8 +41,34 @@ "build", "Werkr.slnx" ], + "group": { + "kind": "build", + "isDefault": true + }, + "problemMatcher": "$msCompile", + "presentation": { + "reveal": "silent", + "revealProblems": "onProblem", + "showReuseMessage": false + } + }, + { + "label": "verify:build-server", + "detail": "Build only the Werkr.Server (Blazor UI) project and its dependencies. Useful when iterating on UI changes without rebuilding the entire solution.", + "type": "process", + "command": "pwsh", + "args": [ + "--noprofile", + "-c", + "dotnet", + "build", + "src/Werkr.Server/Werkr.Server.csproj" + ], "group": "build", "problemMatcher": "$msCompile", + "options": { + "cwd": "${workspaceFolder}" + }, "presentation": { "reveal": "silent", "revealProblems": "onProblem", @@ -49,6 +77,7 @@ }, { "label": "verify:format", + "detail": "Auto-format all C# code in the solution using dotnet format (.editorconfig rules). Run before committing. No external dependencies.", "type": "process", "command": "pwsh", "args": [ @@ -66,18 +95,18 @@ } }, { - "label": "verify:test-unit", + "label": "verify:start-apphost", + "detail": "Launch all Werkr components locally via .NET Aspire (Server, API, Agent). Opens the Aspire dashboard. Use for manual integration testing. Stop with Ctrl+C.", "type": "process", "command": "pwsh", "args": [ "--noprofile", "-c", "dotnet", - "test", + "run", "--project", - "src/Test/Werkr.Tests.Data/Werkr.Tests.Data.csproj" + "src/Werkr.AppHost/Werkr.AppHost.csproj" ], - "group": "test", "problemMatcher": "$msCompile", "options": { "cwd": "${workspaceFolder}" @@ -88,163 +117,266 @@ } }, { - "label": "verify:test-integration", + "label": "verify:docker-check", + "detail": "Validate docker-compose.yml syntax without starting containers. Requires Docker to be running.", "type": "process", "command": "pwsh", "args": [ "--noprofile", "-c", - "dotnet", - "test", - "--project", - "src/Test/Werkr.Tests.Server/Werkr.Tests.Server.csproj" + "docker", + "compose", + "config" ], - "group": "test", - "problemMatcher": "$msCompile", "options": { "cwd": "${workspaceFolder}" }, + "problemMatcher": [], "presentation": { "reveal": "always", "showReuseMessage": false } }, { - "label": "verify:test-e2e", + "label": "verify:docker-build", + "detail": "Generate TLS certs and build all Docker images (Server, API, Agent). Requires Docker. Run before docker:start if images are stale.", + "type": "process", + "command": "pwsh", + "args": [ + "--noprofile", + "-File", + "${workspaceFolder}/scripts/docker-build.ps1" + ], + "group": "build", + "problemMatcher": [], + "presentation": { + "reveal": "always", + "showReuseMessage": false + } + }, + { + "label": "docker:start", + "detail": "Start all Werkr containers in detached mode (Server :5050, API :5001, Agent :5100). Requires Docker and pre-built images (run verify:docker-build first).", "type": "process", "command": "pwsh", "args": [ "--noprofile", "-c", - "dotnet", - "test", - "--project", - "src/Test/Werkr.Tests.Agent/Werkr.Tests.Agent.csproj" + "docker", + "compose", + "up", + "-d" ], - "group": "test", - "problemMatcher": "$msCompile", "options": { "cwd": "${workspaceFolder}" }, + "problemMatcher": [], "presentation": { "reveal": "always", "showReuseMessage": false } }, { - "label": "verify:start-apphost", + "label": "docker:stop", + "detail": "Stop and remove all Werkr containers. Does not remove volumes or images.", "type": "process", "command": "pwsh", "args": [ "--noprofile", "-c", - "dotnet", - "run", - "--project", - "src/Werkr.AppHost/Werkr.AppHost.csproj" + "docker", + "compose", + "down" ], - "group": "test", - "problemMatcher": "$msCompile", "options": { "cwd": "${workspaceFolder}" }, + "problemMatcher": [], "presentation": { "reveal": "always", "showReuseMessage": false } }, { - "label": "verify:docker-check", + "label": "docker:restart", + "detail": "Stop then start all Werkr containers (sequential: docker:stop → docker:start).", + "dependsOn": [ + "docker:stop", + "docker:start" + ], + "dependsOrder": "sequence", + "problemMatcher": [], + "presentation": { + "reveal": "always", + "showReuseMessage": false + } + }, + { + "label": "test:dotnet", + "detail": "Run all .NET tests at the solution level (single build, all 4 test projects together). Default verbosity: normal. Change --verbosity to 'quiet' for counts only or 'detailed' for full diagnostics. Requires Docker for Testcontainers (test:api tests).", "type": "process", "command": "pwsh", "args": [ "--noprofile", "-c", - "docker", - "compose", - "config" + "dotnet", + "test", + "--solution", + "Werkr.slnx", + "--verbosity", + "normal" ], + "group": "test", + "problemMatcher": "$msCompile", "options": { "cwd": "${workspaceFolder}" }, + "presentation": { + "reveal": "always", + "showReuseMessage": false + } + }, + { + "label": "test:graphui", + "detail": "Run graph-ui TypeScript tests via Vitest. Requires Node 22+. Install deps first: npm install --prefix src/Werkr.Server/graph-ui", + "type": "process", + "command": "npm", + "args": [ + "test", + "--prefix", + "src/Werkr.Server/graph-ui" + ], + "group": "test", "problemMatcher": [], + "options": { + "cwd": "${workspaceFolder}" + }, "presentation": { "reveal": "always", "showReuseMessage": false } }, { - "label": "verify:docker-build", + "label": "test:all", + "detail": "Run ALL tests: .NET (solution-level) then JS/TS (Vitest). This is the default test task. Chains test:dotnet → test:graphui sequentially. Requires Docker (for Testcontainers) and Node 22+ (for Vitest).", + "dependsOn": [ + "test:dotnet", + "test:graphui" + ], + "dependsOrder": "sequence", + "group": { + "kind": "test", + "isDefault": true + }, + "problemMatcher": [], + "presentation": { + "reveal": "always", + "showReuseMessage": false + } + }, + { + "label": "test:unit", + "detail": "Run data layer unit tests only (Werkr.Tests.Data). Fast, in-memory EF Core — no Docker needed. Change --verbosity to 'quiet' for counts only or 'detailed' for full diagnostics.", "type": "process", "command": "pwsh", "args": [ "--noprofile", - "-File", - "${workspaceFolder}/scripts/docker-build.ps1" + "-c", + "dotnet", + "test", + "--project", + "src/Test/Werkr.Tests.Data/Werkr.Tests.Data.csproj", + "--verbosity", + "normal" ], - "group": "build", - "problemMatcher": [], + "group": "test", + "problemMatcher": "$msCompile", + "options": { + "cwd": "${workspaceFolder}" + }, "presentation": { "reveal": "always", "showReuseMessage": false } }, { - "label": "docker:start", + "label": "test:api", + "detail": "Run API integration tests only (Werkr.Tests). Uses Testcontainers (PostgreSQL 17) + WebApplicationFactory. Requires Docker. Change --verbosity to 'quiet' for counts only or 'detailed' for full diagnostics.", "type": "process", "command": "pwsh", "args": [ "--noprofile", "-c", - "docker", - "compose", - "up", - "-d" + "dotnet", + "test", + "--project", + "src/Test/Werkr.Tests/Werkr.Tests.csproj", + "--verbosity", + "normal" ], + "group": "test", + "problemMatcher": "$msCompile", "options": { "cwd": "${workspaceFolder}" }, - "problemMatcher": [], "presentation": { "reveal": "always", "showReuseMessage": false } }, { - "label": "docker:stop", + "label": "test:server", + "detail": "Run Blazor component tests only (Werkr.Tests.Server). Uses bunit + in-memory EF Core — no Docker needed. Change --verbosity to 'quiet' for counts only or 'detailed' for full diagnostics.", "type": "process", "command": "pwsh", "args": [ "--noprofile", "-c", - "docker", - "compose", - "down" + "dotnet", + "test", + "--project", + "src/Test/Werkr.Tests.Server/Werkr.Tests.Server.csproj", + "--verbosity", + "normal" ], + "group": "test", + "problemMatcher": "$msCompile", "options": { "cwd": "${workspaceFolder}" }, - "problemMatcher": [], "presentation": { "reveal": "always", "showReuseMessage": false } }, { - "label": "docker:restart", - "dependsOn": [ - "docker:stop", - "docker:start" + "label": "test:e2e", + "detail": "Run Agent end-to-end tests only (Werkr.Tests.Agent). Tests embedded PowerShell execution, scheduling, and triggers. No Docker needed. Change --verbosity to 'quiet' for counts only or 'detailed' for full diagnostics.", + "type": "process", + "command": "pwsh", + "args": [ + "--noprofile", + "-c", + "dotnet", + "test", + "--project", + "src/Test/Werkr.Tests.Agent/Werkr.Tests.Agent.csproj", + "--verbosity", + "normal" ], - "dependsOrder": "sequence", - "problemMatcher": [], + "group": "test", + "problemMatcher": "$msCompile", + "options": { + "cwd": "${workspaceFolder}" + }, "presentation": { "reveal": "always", "showReuseMessage": false } }, { - "label": "ef:app:postgres", + "label": "migrate:app:postgres", + "detail": "Add a PostgreSQL migration for the app data context (PostgresWerkrDbContext). Prompts for migration name. Output: src/Werkr.Data/Migrations/Postgres/", "type": "shell", "command": "pwsh", "args": [ @@ -276,7 +408,8 @@ } }, { - "label": "ef:app:sqlite", + "label": "migrate:app:sqlite", + "detail": "Add a SQLite migration for the app data context (SqliteWerkrDbContext). Prompts for migration name. Output: src/Werkr.Data/Migrations/Sqlite/", "type": "shell", "command": "pwsh", "args": [ @@ -308,10 +441,11 @@ } }, { - "label": "ef:app:both", + "label": "migrate:app", + "detail": "Add migrations for the app data context on BOTH providers (PostgreSQL + SQLite). Prompts for migration name once, applies to both. Runs migrate:app:postgres → migrate:app:sqlite.", "dependsOn": [ - "ef:app:postgres", - "ef:app:sqlite" + "migrate:app:postgres", + "migrate:app:sqlite" ], "dependsOrder": "sequence", "problemMatcher": [], @@ -322,7 +456,8 @@ } }, { - "label": "ef:identity:postgres", + "label": "migrate:identity:postgres", + "detail": "Add a PostgreSQL migration for the Identity context (PostgresWerkrIdentityDbContext). Prompts for migration name. Output: src/Werkr.Data.Identity/Migrations/Postgres/", "type": "shell", "command": "pwsh", "args": [ @@ -354,7 +489,8 @@ } }, { - "label": "ef:identity:sqlite", + "label": "migrate:identity:sqlite", + "detail": "Add a SQLite migration for the Identity context (SqliteWerkrIdentityDbContext). Prompts for migration name. Output: src/Werkr.Data.Identity/Migrations/Sqlite/", "type": "shell", "command": "pwsh", "args": [ @@ -386,10 +522,11 @@ } }, { - "label": "ef:identity:both", + "label": "migrate:identity", + "detail": "Add migrations for the Identity context on BOTH providers (PostgreSQL + SQLite). Prompts for migration name once. Runs migrate:identity:postgres → migrate:identity:sqlite.", "dependsOn": [ - "ef:identity:postgres", - "ef:identity:sqlite" + "migrate:identity:postgres", + "migrate:identity:sqlite" ], "dependsOrder": "sequence", "problemMatcher": [], @@ -400,10 +537,11 @@ } }, { - "label": "ef:all", + "label": "migrate:all", + "detail": "Add migrations for ALL contexts and ALL providers (app + identity × postgres + sqlite). Prompts for migration name once. Runs migrate:app → migrate:identity.", "dependsOn": [ - "ef:app:both", - "ef:identity:both" + "migrate:app", + "migrate:identity" ], "dependsOrder": "sequence", "problemMatcher": [], @@ -412,77 +550,6 @@ "reveal": "always", "showReuseMessage": false } - }, - { - "label": "verify:build-server", - "type": "shell", - "command": "pwsh --noprofile -c 'dotnet build src/Werkr.Server/Werkr.Server.csproj'" - }, - { - "label": "verify:test-e2e-verbose", - "type": "shell", - "command": "pwsh --noprofile -c 'dotnet test --project src/Test/Werkr.Tests.Agent/Werkr.Tests.Agent.csproj --verbosity normal 2>&1 | tail -50'" - }, - { - "label": "verify:test-e2e-failures", - "type": "shell", - "command": "pwsh --noprofile -c 'dotnet test --project src/Test/Werkr.Tests.Agent/Werkr.Tests.Agent.csproj -- --report-trx 2>&1 | grep -i -E \"failed|error|FAIL\" | head -20'" - }, - { - "label": "verify:e2e-fail-detail", - "type": "shell", - "command": "pwsh --noprofile -c 'dotnet test --project src/Test/Werkr.Tests.Agent/Werkr.Tests.Agent.csproj --no-build 2>&1 | grep -i -E \"failed|FAIL\" | head -20'" - }, - { - "label": "verify:e2e-tail", - "type": "shell", - "command": "pwsh --noprofile -c 'dotnet test --project src/Test/Werkr.Tests.Agent/Werkr.Tests.Agent.csproj'" - }, - { - "label": "verify:test-server", - "type": "shell", - "command": "pwsh --noprofile -c 'dotnet test --project src/Test/Werkr.Tests.Server/Werkr.Tests.Server.csproj'" - }, - { - "label": "verify:test-api", - "type": "process", - "command": "pwsh", - "args": [ - "--noprofile", - "-c", - "dotnet", - "test", - "--project", - "src/Test/Werkr.Tests/Werkr.Tests.csproj" - ], - "group": "test", - "problemMatcher": "$msCompile", - "options": { - "cwd": "${workspaceFolder}" - }, - "presentation": { - "reveal": "always", - "showReuseMessage": false - } - }, - { - "label": "verify:test-graphui", - "type": "process", - "command": "npm", - "args": [ - "test", - "--prefix", - "src/Werkr.Server/graph-ui" - ], - "group": "test", - "problemMatcher": [], - "options": { - "cwd": "${workspaceFolder}" - }, - "presentation": { - "reveal": "always", - "showReuseMessage": false - } } ] } diff --git a/Directory.Packages.props b/Directory.Packages.props index 935cc45..80c29ed 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -5,10 +5,10 @@ - + - - + + @@ -19,7 +19,7 @@ - + @@ -45,9 +45,9 @@ - + - + diff --git a/src/Installer/Msi/Agent/packages.lock.json b/src/Installer/Msi/Agent/packages.lock.json index f432b8b..b530bea 100644 --- a/src/Installer/Msi/Agent/packages.lock.json +++ b/src/Installer/Msi/Agent/packages.lock.json @@ -1,19 +1,19 @@ -{ - "version": 2, - "dependencies": { - "native,Version=v0.0": { - "WixToolset.UI.wixext": { - "type": "Direct", - "requested": "[6.0.2, )", - "resolved": "6.0.2", - "contentHash": "1Hq+Kp4WTb9TLRLRpv/iGod6MnNadz1ZrmY1USS6SL/WVxFuiBvQVGGLXrcdQld9J7oVWCZ8k9eMFtaYJOJ5AQ==" - }, - "WixToolset.Util.wixext": { - "type": "Direct", - "requested": "[6.0.2, )", - "resolved": "6.0.2", - "contentHash": "plP64ub/0KjNbtLeaeiibVCPkKfr439WTKZmTwVSoQ4fznLHBZLsE0+wcyk6dA5cQuQsD5hlmnVGTKgPioiusQ==" - } - } - } +{ + "version": 2, + "dependencies": { + "native,Version=v0.0": { + "WixToolset.UI.wixext": { + "type": "Direct", + "requested": "[6.0.2, )", + "resolved": "6.0.2", + "contentHash": "1Hq+Kp4WTb9TLRLRpv/iGod6MnNadz1ZrmY1USS6SL/WVxFuiBvQVGGLXrcdQld9J7oVWCZ8k9eMFtaYJOJ5AQ==" + }, + "WixToolset.Util.wixext": { + "type": "Direct", + "requested": "[6.0.2, )", + "resolved": "6.0.2", + "contentHash": "plP64ub/0KjNbtLeaeiibVCPkKfr439WTKZmTwVSoQ4fznLHBZLsE0+wcyk6dA5cQuQsD5hlmnVGTKgPioiusQ==" + } + } + } } \ No newline at end of file diff --git a/src/Installer/Msi/CustomActions/packages.lock.json b/src/Installer/Msi/CustomActions/packages.lock.json index 9d0c1f5..3ad53ee 100644 --- a/src/Installer/Msi/CustomActions/packages.lock.json +++ b/src/Installer/Msi/CustomActions/packages.lock.json @@ -1,107 +1,107 @@ -{ - "version": 1, - "dependencies": { - ".NETFramework,Version=v4.8.1": { - "System.Text.Json": { - "type": "Direct", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "vW2zhkWziyfhoSXNf42mTWyilw+vfwBGOsODDsHSFtOIY6LCgfRVUyaAilLEL4Kc1fzhaxcep5pS0VWYPSDW0w==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.5", - "System.Buffers": "4.6.1", - "System.IO.Pipelines": "10.0.5", - "System.Memory": "4.6.3", - "System.Runtime.CompilerServices.Unsafe": "6.1.2", - "System.Text.Encodings.Web": "10.0.5", - "System.Threading.Tasks.Extensions": "4.6.3", - "System.ValueTuple": "4.6.1" - } - }, - "WixToolset.Dtf.CustomAction": { - "type": "Direct", - "requested": "[6.0.2, )", - "resolved": "6.0.2", - "contentHash": "VJRjIOzIkfolXw+kUWenyx2YQT/gagpr6Cs0XnvLPz7xl6pp/v+lQdwWh+wBu2P6apkg4yH1XI1WmXrTCjlD9g==", - "dependencies": { - "WixToolset.Dtf.WindowsInstaller": "6.0.2" - } - }, - "WixToolset.Dtf.WindowsInstaller": { - "type": "Direct", - "requested": "[6.0.2, )", - "resolved": "6.0.2", - "contentHash": "Tnc1EIjE5A7nvEcnUQLEgf1F1sXWzd3L4/n1/PXMnlt7dzaTEvR2OTiFgHD6Y+Tq9qZzAQZelcoS0Ps9bCLufw==" - }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "hQB3Hq1LlF0NkGVNyZIvwIQIY3LM7Cw1oYjNiTvdNqmzzipVAWEK1c5sj2H5aFX0udnjgPLxSYKq2fupueS8ow==", - "dependencies": { - "System.Threading.Tasks.Extensions": "4.6.3" - } - }, - "System.Buffers": { - "type": "Transitive", - "resolved": "4.6.1", - "contentHash": "N8GXpmiLMtljq7gwvyS+1QvKT/W2J8sNAvx+HVg4NGmsG/H+2k/y9QI23auLJRterrzCiDH+IWAw4V/GPwsMlw==" - }, - "System.IO.Pipelines": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "8/ZHN/j2y1t+7McdCf1wXku2/c7wtrGLz3WQabIoPuLAn3bHDWT6YOJYreJq8sCMPSo6c8iVYXUdLlFGX5PEqw==", - "dependencies": { - "System.Buffers": "4.6.1", - "System.Memory": "4.6.3", - "System.Threading.Tasks.Extensions": "4.6.3" - } - }, - "System.Memory": { - "type": "Transitive", - "resolved": "4.6.3", - "contentHash": "qdcDOgnFZY40+Q9876JUHnlHu7bosOHX8XISRoH94fwk6hgaeQGSgfZd8srWRZNt5bV9ZW2TljcegDNxsf+96A==", - "dependencies": { - "System.Buffers": "4.6.1", - "System.Numerics.Vectors": "4.6.1", - "System.Runtime.CompilerServices.Unsafe": "6.1.2" - } - }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.6.1", - "contentHash": "sQxefTnhagrhoq2ReR0D/6K0zJcr9Hrd6kikeXsA1I8kOCboTavcUC4r7TSfpKFeE163uMuxZcyfO1mGO3EN8Q==" - }, - "System.Runtime.CompilerServices.Unsafe": { - "type": "Transitive", - "resolved": "6.1.2", - "contentHash": "2hBr6zdbIBTDE3EhK7NSVNdX58uTK6iHW/P/Axmm9sl1xoGSLqDvMtpecn226TNwHByFokYwJmt/aQQNlO5CRw==" - }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "opvD/nKTzGKA7GVntZ9L823kN6IxgHQfuxY+VI9gv8VE1Y7CSKoi/QS1EYDQiA63MqtZsD7X6zkISd2ZQJohTQ==", - "dependencies": { - "System.Buffers": "4.6.1", - "System.Memory": "4.6.3", - "System.Runtime.CompilerServices.Unsafe": "6.1.2" - } - }, - "System.Threading.Tasks.Extensions": { - "type": "Transitive", - "resolved": "4.6.3", - "contentHash": "7sCiwilJLYbTZELaKnc7RecBBXWXA+xMLQWZKWawBxYjp6DBlSE3v9/UcvKBvr1vv2tTOhipiogM8rRmxlhrVA==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "6.1.2" - } - }, - "System.ValueTuple": { - "type": "Transitive", - "resolved": "4.6.1", - "contentHash": "+RJT4qaekpZ7DDLhf+LTjq+E48jieKiY9ulJ+BoxKmZblIJfIJT8Ufcaa/clQqnYvWs8jugfGSMu8ylS0caG0w==" - }, - "werkr.common.configuration": { - "type": "Project" - } - } - } +{ + "version": 1, + "dependencies": { + ".NETFramework,Version=v4.8.1": { + "System.Text.Json": { + "type": "Direct", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "vW2zhkWziyfhoSXNf42mTWyilw+vfwBGOsODDsHSFtOIY6LCgfRVUyaAilLEL4Kc1fzhaxcep5pS0VWYPSDW0w==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "10.0.5", + "System.Buffers": "4.6.1", + "System.IO.Pipelines": "10.0.5", + "System.Memory": "4.6.3", + "System.Runtime.CompilerServices.Unsafe": "6.1.2", + "System.Text.Encodings.Web": "10.0.5", + "System.Threading.Tasks.Extensions": "4.6.3", + "System.ValueTuple": "4.6.1" + } + }, + "WixToolset.Dtf.CustomAction": { + "type": "Direct", + "requested": "[6.0.2, )", + "resolved": "6.0.2", + "contentHash": "VJRjIOzIkfolXw+kUWenyx2YQT/gagpr6Cs0XnvLPz7xl6pp/v+lQdwWh+wBu2P6apkg4yH1XI1WmXrTCjlD9g==", + "dependencies": { + "WixToolset.Dtf.WindowsInstaller": "6.0.2" + } + }, + "WixToolset.Dtf.WindowsInstaller": { + "type": "Direct", + "requested": "[6.0.2, )", + "resolved": "6.0.2", + "contentHash": "Tnc1EIjE5A7nvEcnUQLEgf1F1sXWzd3L4/n1/PXMnlt7dzaTEvR2OTiFgHD6Y+Tq9qZzAQZelcoS0Ps9bCLufw==" + }, + "Microsoft.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "hQB3Hq1LlF0NkGVNyZIvwIQIY3LM7Cw1oYjNiTvdNqmzzipVAWEK1c5sj2H5aFX0udnjgPLxSYKq2fupueS8ow==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.6.3" + } + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.6.1", + "contentHash": "N8GXpmiLMtljq7gwvyS+1QvKT/W2J8sNAvx+HVg4NGmsG/H+2k/y9QI23auLJRterrzCiDH+IWAw4V/GPwsMlw==" + }, + "System.IO.Pipelines": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "8/ZHN/j2y1t+7McdCf1wXku2/c7wtrGLz3WQabIoPuLAn3bHDWT6YOJYreJq8sCMPSo6c8iVYXUdLlFGX5PEqw==", + "dependencies": { + "System.Buffers": "4.6.1", + "System.Memory": "4.6.3", + "System.Threading.Tasks.Extensions": "4.6.3" + } + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.6.3", + "contentHash": "qdcDOgnFZY40+Q9876JUHnlHu7bosOHX8XISRoH94fwk6hgaeQGSgfZd8srWRZNt5bV9ZW2TljcegDNxsf+96A==", + "dependencies": { + "System.Buffers": "4.6.1", + "System.Numerics.Vectors": "4.6.1", + "System.Runtime.CompilerServices.Unsafe": "6.1.2" + } + }, + "System.Numerics.Vectors": { + "type": "Transitive", + "resolved": "4.6.1", + "contentHash": "sQxefTnhagrhoq2ReR0D/6K0zJcr9Hrd6kikeXsA1I8kOCboTavcUC4r7TSfpKFeE163uMuxZcyfO1mGO3EN8Q==" + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "6.1.2", + "contentHash": "2hBr6zdbIBTDE3EhK7NSVNdX58uTK6iHW/P/Axmm9sl1xoGSLqDvMtpecn226TNwHByFokYwJmt/aQQNlO5CRw==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "opvD/nKTzGKA7GVntZ9L823kN6IxgHQfuxY+VI9gv8VE1Y7CSKoi/QS1EYDQiA63MqtZsD7X6zkISd2ZQJohTQ==", + "dependencies": { + "System.Buffers": "4.6.1", + "System.Memory": "4.6.3", + "System.Runtime.CompilerServices.Unsafe": "6.1.2" + } + }, + "System.Threading.Tasks.Extensions": { + "type": "Transitive", + "resolved": "4.6.3", + "contentHash": "7sCiwilJLYbTZELaKnc7RecBBXWXA+xMLQWZKWawBxYjp6DBlSE3v9/UcvKBvr1vv2tTOhipiogM8rRmxlhrVA==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.1.2" + } + }, + "System.ValueTuple": { + "type": "Transitive", + "resolved": "4.6.1", + "contentHash": "+RJT4qaekpZ7DDLhf+LTjq+E48jieKiY9ulJ+BoxKmZblIJfIJT8Ufcaa/clQqnYvWs8jugfGSMu8ylS0caG0w==" + }, + "werkr.common.configuration": { + "type": "Project" + } + } + } } \ No newline at end of file diff --git a/src/Installer/Msi/Server/packages.lock.json b/src/Installer/Msi/Server/packages.lock.json index f432b8b..b530bea 100644 --- a/src/Installer/Msi/Server/packages.lock.json +++ b/src/Installer/Msi/Server/packages.lock.json @@ -1,19 +1,19 @@ -{ - "version": 2, - "dependencies": { - "native,Version=v0.0": { - "WixToolset.UI.wixext": { - "type": "Direct", - "requested": "[6.0.2, )", - "resolved": "6.0.2", - "contentHash": "1Hq+Kp4WTb9TLRLRpv/iGod6MnNadz1ZrmY1USS6SL/WVxFuiBvQVGGLXrcdQld9J7oVWCZ8k9eMFtaYJOJ5AQ==" - }, - "WixToolset.Util.wixext": { - "type": "Direct", - "requested": "[6.0.2, )", - "resolved": "6.0.2", - "contentHash": "plP64ub/0KjNbtLeaeiibVCPkKfr439WTKZmTwVSoQ4fznLHBZLsE0+wcyk6dA5cQuQsD5hlmnVGTKgPioiusQ==" - } - } - } +{ + "version": 2, + "dependencies": { + "native,Version=v0.0": { + "WixToolset.UI.wixext": { + "type": "Direct", + "requested": "[6.0.2, )", + "resolved": "6.0.2", + "contentHash": "1Hq+Kp4WTb9TLRLRpv/iGod6MnNadz1ZrmY1USS6SL/WVxFuiBvQVGGLXrcdQld9J7oVWCZ8k9eMFtaYJOJ5AQ==" + }, + "WixToolset.Util.wixext": { + "type": "Direct", + "requested": "[6.0.2, )", + "resolved": "6.0.2", + "contentHash": "plP64ub/0KjNbtLeaeiibVCPkKfr439WTKZmTwVSoQ4fznLHBZLsE0+wcyk6dA5cQuQsD5hlmnVGTKgPioiusQ==" + } + } + } } \ No newline at end of file diff --git a/src/Test/Werkr.Tests.Agent/packages.lock.json b/src/Test/Werkr.Tests.Agent/packages.lock.json index 5139662..77763d9 100644 --- a/src/Test/Werkr.Tests.Agent/packages.lock.json +++ b/src/Test/Werkr.Tests.Agent/packages.lock.json @@ -1,1718 +1,1718 @@ -{ - "version": 2, - "dependencies": { - "net10.0": { - "Microsoft.Extensions.TimeProvider.Testing": { - "type": "Direct", - "requested": "[10.4.0, )", - "resolved": "10.4.0", - "contentHash": "uJ8n9WUEzux9I2CjZh7imGBgZadfwhAKlxuBq7GsNGL8FJF81aHXAYaRMnwW+9EvRFQNytu7xo1ffeuuTncAzg==" - }, - "Microsoft.PowerShell.SDK": { - "type": "Direct", - "requested": "[7.6.0, )", - "resolved": "7.6.0", - "contentHash": "35NE9e2KkMqgtBQjUYT0aagNIMTPw3NUsN/PqbO/qSxkIyZkVC5rDbNu5xwts0uGtp6SAlclX5HOHJvvY3Fh5Q==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.5", - "Microsoft.Extensions.ObjectPool": "10.0.5", - "Microsoft.Management.Infrastructure.CimCmdlets": "7.6.0", - "Microsoft.PowerShell.Commands.Diagnostics": "7.6.0", - "Microsoft.PowerShell.Commands.Management": "7.6.0", - "Microsoft.PowerShell.Commands.Utility": "7.6.0", - "Microsoft.PowerShell.ConsoleHost": "7.6.0", - "Microsoft.PowerShell.Security": "7.6.0", - "Microsoft.WSMan.Management": "7.6.0", - "Microsoft.Win32.Registry.AccessControl": "10.0.5", - "Microsoft.Win32.SystemEvents": "10.0.5", - "Microsoft.Windows.Compatibility": "10.0.5", - "System.CodeDom": "10.0.5", - "System.ComponentModel.Composition": "10.0.5", - "System.ComponentModel.Composition.Registration": "10.0.5", - "System.Configuration.ConfigurationManager": "10.0.5", - "System.Data.Odbc": "10.0.5", - "System.Data.OleDb": "10.0.5", - "System.Data.SqlClient": "4.9.1", - "System.Diagnostics.EventLog": "10.0.5", - "System.Diagnostics.PerformanceCounter": "10.0.5", - "System.DirectoryServices": "10.0.5", - "System.DirectoryServices.AccountManagement": "10.0.5", - "System.DirectoryServices.Protocols": "10.0.5", - "System.Drawing.Common": "10.0.5", - "System.IO.Packaging": "10.0.5", - "System.IO.Ports": "10.0.5", - "System.Management": "10.0.5", - "System.Management.Automation": "7.6.0", - "System.Net.Http.WinHttpHandler": "10.0.5", - "System.Reflection.Context": "10.0.5", - "System.Runtime.Caching": "10.0.5", - "System.Security.Cryptography.Pkcs": "10.0.5", - "System.Security.Cryptography.ProtectedData": "10.0.5", - "System.Security.Cryptography.Xml": "10.0.5", - "System.Security.Permissions": "10.0.5", - "System.ServiceModel.Http": "10.0.652802", - "System.ServiceModel.NetFramingBase": "10.0.652802", - "System.ServiceModel.NetTcp": "10.0.652802", - "System.ServiceModel.Primitives": "10.0.652802", - "System.ServiceModel.Syndication": "10.0.5", - "System.ServiceProcess.ServiceController": "10.0.5", - "System.Speech": "10.0.5", - "System.Windows.Extensions": "10.0.5", - "runtime.android-arm.runtime.native.System.IO.Ports": "10.0.5", - "runtime.android-arm64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.android-x64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.android-x86.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-arm.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-arm64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-bionic-arm64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-bionic-x64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-musl-arm.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-musl-arm64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-musl-x64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-x64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.maccatalyst-arm64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.maccatalyst-x64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.native.System.IO.Ports": "10.0.5", - "runtime.osx-arm64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.osx-x64.runtime.native.System.IO.Ports": "10.0.5" - } - }, - "MSTest": { - "type": "Direct", - "requested": "[4.1.0, )", - "resolved": "4.1.0", - "contentHash": "2bk47yg7HcHRyf6Zf0XgCZicTVTQj4D5lonYTO7lWMxCQB+x66VrQNc2dADBfzthKXfHaA37m8i+VV5h6SbWiA==", - "dependencies": { - "MSTest.TestAdapter": "4.1.0", - "MSTest.TestFramework": "4.1.0", - "Microsoft.NET.Test.Sdk": "18.0.1", - "Microsoft.Testing.Extensions.CodeCoverage": "18.4.1", - "Microsoft.Testing.Extensions.TrxReport": "2.1.0" - } - }, - "BouncyCastle.Cryptography": { - "type": "Transitive", - "resolved": "2.6.2", - "contentHash": "7oWOcvnntmMKNzDLsdxAYqApt+AjpRpP2CShjMfIa3umZ42UQMvH0tl1qAliYPNYO6vTdcGMqnRrCPmsfzTI1w==" - }, - "Grpc.AspNetCore.Server": { - "type": "Transitive", - "resolved": "2.76.0", - "contentHash": "diSC/ZeNdSdxHdYSOpYwuSBBDYpuNVtJQFJfiBB0WrYOQ4lVMmdxuUZJcViahQyo8pCvS3Mueo5lqFxwwMF/iw==", - "dependencies": { - "Grpc.Net.Common": "2.76.0" - } - }, - "Grpc.AspNetCore.Server.ClientFactory": { - "type": "Transitive", - "resolved": "2.76.0", - "contentHash": "y5KGO1GO0N2L/hCCMR05mmoK8j+v8rKvZ+9nothAxKx2Tf2CwV8f4TM5K0GkKfDsp4vrc4lm90MU6E+DeN7YIw==", - "dependencies": { - "Grpc.AspNetCore.Server": "2.76.0", - "Grpc.Net.ClientFactory": "2.76.0" - } - }, - "Grpc.Core.Api": { - "type": "Transitive", - "resolved": "2.76.0", - "contentHash": "cSxC2tdnFdXXuBgIn1pjc4YBx7LXTCp4M0qn+SMBS35VWZY+cEQYLWTBDDhdBH1HzU7BV+ncVZlniGQHMpRJKQ==" - }, - "Grpc.Net.Common": { - "type": "Transitive", - "resolved": "2.76.0", - "contentHash": "bZpiMVYgvpB44/wBh1RotrkqC7bg2FOasLri2GhR3hMKyzsiTxCoDE49YjPrJeFc4RW0wS8u+EInI09sjxVFRA==", - "dependencies": { - "Grpc.Core.Api": "2.76.0" - } - }, - "Humanizer.Core": { - "type": "Transitive", - "resolved": "2.14.1", - "contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==" - }, - "Json.More.Net": { - "type": "Transitive", - "resolved": "2.1.1", - "contentHash": "ZXAKl2VsdnIZeUo1PFII3Oi1m1L4YQjEyDjygHfHln5vgsjgIo749X6xWkv7qFYp8RROES+vOEfDcvvoVgs8kA==" - }, - "JsonPointer.Net": { - "type": "Transitive", - "resolved": "5.3.1", - "contentHash": "3e2OJjU0OaE26XC/klgxbJuXvteFWTDJIJv0ITYWcJEoskq7jzUwPSC1s0iz4wPPQnfN7vwwFmg2gJfwRAPwgw==", - "dependencies": { - "Humanizer.Core": "2.14.1", - "Json.More.Net": "2.1.1" - } - }, - "JsonSchema.Net": { - "type": "Transitive", - "resolved": "7.4.0", - "contentHash": "5T3DWENwuCzLwFWz0qjXXVWA8+5+gC95OLkhqUBWpVpWBMr9gwfhWNeX8rWyr+fLQ7pIQ+lWuHIrmXRudxOOSw==", - "dependencies": { - "JsonPointer.Net": "5.3.1" - } - }, - "Markdig.Signed": { - "type": "Transitive", - "resolved": "0.44.0", - "contentHash": "mNxf8HrQA/clO8usqQhVc0BGlw0bJtZ76dic5KZGBPJZDX4UR67Jglwilkp5A//gPSMwcoY5EjLPppkZ/B4IMg==" - }, - "Microsoft.ApplicationInsights": { - "type": "Transitive", - "resolved": "2.23.0", - "contentHash": "nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw==" - }, - "Microsoft.AspNetCore.Metadata": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "nXVB1K4RzyhDHKYWLiq3+aJopJZKO5ojFqHV9PZ74fe4VWM/8itoouqsd2KIqSooIwQ13UDNlPQfN2rWr7hc2A==" - }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "hQB3Hq1LlF0NkGVNyZIvwIQIY3LM7Cw1oYjNiTvdNqmzzipVAWEK1c5sj2H5aFX0udnjgPLxSYKq2fupueS8ow==" - }, - "Microsoft.CodeAnalysis.Analyzers": { - "type": "Transitive", - "resolved": "3.11.0", - "contentHash": "v/EW3UE8/lbEYHoC2Qq7AR/DnmvpgdtAMndfQNmpuIMx/Mto8L5JnuCfdBYtgvalQOtfNCnxFejxuRrryvUTsg==" - }, - "Microsoft.CodeAnalysis.Common": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ZXRAdvH6GiDeHRyd3q/km8Z44RoM6FBWHd+gen/la81mVnAdHTEsEkO5J0TCNXBymAcx5UYKt5TvgKBhaLJEow==", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.11.0" - } - }, - "Microsoft.CodeAnalysis.CSharp": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "5DSyJ9bk+ATuDy7fp2Zt0mJStDVKbBoiz1DyfAwSa+k4H4IwykAUcV3URelw5b8/iVbfSaOwkwmPUZH6opZKCw==", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.11.0", - "Microsoft.CodeAnalysis.Common": "[5.0.0]" - } - }, - "Microsoft.CodeCoverage": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "O+utSr97NAJowIQT/OVp3Lh9QgW/wALVTP4RG1m2AfFP4IyJmJz0ZBmFJUsRQiAPgq6IRC0t8AAzsiPIsaUDEA==" - }, - "Microsoft.DiaSymReader": { - "type": "Transitive", - "resolved": "2.0.0", - "contentHash": "QcZrCETsBJqy/vQpFtJc+jSXQ0K5sucQ6NUFbTNVHD4vfZZOwjZ/3sBzczkC4DityhD3AVO/+K/+9ioLs1AgRA==" - }, - "Microsoft.EntityFrameworkCore.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "32c58Rnm47Qvhimawf67KO9PytgPz3QoWye7Abapt0Yocw/JnzMiSNj/pRoIKyn8Jxypkv86zxKD4Q/zNTc0Ag==" - }, - "Microsoft.EntityFrameworkCore.Analyzers": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "ipC4u1VojgEfoIZhtbS2Sx5IluJTP/Jf1hz3yGsxGBgSukYY/CquI6rAjxn5H58CZgVn36qcuPPtNMwZ0AUzMg==" - }, - "Microsoft.EntityFrameworkCore.Relational": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "uxmFjZEAB/KbsgWFSS4lLqkEHCfXxB2x0UcbiO4e5fCRpFFeTMSx/me6009nYJLu5IKlDwO1POh++P6RilFTDw==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5" - } - }, - "Microsoft.EntityFrameworkCore.Sqlite.Core": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "rVH43bcUyZiMn0SnCpVnvFpl4PFxT4GwmuVVLcT4JL0NtzuHY9ymKV+Llb5cjuJ+6+gEl4eixy2rE8nxOPcBSA==", - "dependencies": { - "Microsoft.Data.Sqlite.Core": "10.0.5", - "Microsoft.EntityFrameworkCore.Relational": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyModel": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "SQLitePCLRaw.core": "2.1.11" - } - }, - "Microsoft.Extensions.AmbientMetadata.Application": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "bovnONzrr/JIc+w343i857rJEb7cQH9UzEjbV5n67agWBEYICGQb8xiqYz5+GoFXp6mKEKLwYCQGttMU1p5yXQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.4", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.4", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "k/QDdQ94/0Shi0KfU+e12m73jfQo+3JpErTtgpZfsCIqkvdEEO0XIx6R+iTbN55rNPaNhOqNY4/sB+jZ8XxVPw==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Caching.Memory": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "jUEXmkBUPdOS/MP9areK/sbKhdklq9+tEhvwfxGalZVnmyLUO5rrheNNutUBtvbZ7J8ECkG7/r2KXi/IFC06cA==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "4WkknDbVrHNf+S6fwSt1OAXlGJ/G/QrtJlqx4aNzOLmeT3GRyxpGLZn+Q3UV+RMRAF6FfsijEZBg2ZAW8bTAkg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.ObjectPool": "10.0.4" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "8Rx5sqg04FttxrumyG6bmoRuFRgYzK6IVwF1i0/o0cXfKBdDeVpJejKHtJCMjyg9E/DNMVqpqOGe/tCT5gYvVA==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "99Z4rjyXopb1MIazDSPcvwYCUdYNO01Cf1GUs2WUjIFAbkGmwzj2vPa2k+3pheJRV+YgNd2QqRKHAri0oBAU4Q==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "OhTr0O79dP49734lLTqVveivVX9sDXxbI/8vjELAZTHXqoN90mdpgTAgwicJED42iaHMCcZcK6Bj+8wNyBikaw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", - "Microsoft.Extensions.FileProviders.Physical": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "v1SVsowG6YE1YnHVGmLWz57YTRCQRx9pH5ebIESXfm5isI9gA3QaMyg/oMTzPpXYZwSAVDzYItGJKfmV+pqXkQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "iVMtq9eRvzyhx8949EGT0OCYJfXi737SbRVzWXE5GrOgGj5AaZ9eUuxA/BSUfmOMALKn/g8KfFaNQw0eiB3lyA==" - }, - "Microsoft.Extensions.DependencyInjection.AutoActivation": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "ksmUG2SFTcXzYdyoLOdeSM/qYLRGN6qbbSzYVkwMK9xsctfR1hYkUayeOpFCMd7L+QSlYX72mK9wxwdgQxyS4g==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "10.0.4" - } - }, - "Microsoft.Extensions.DependencyModel": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "xA4kkL+QS6KCAOKz/O0oquHs44Ob8J7zpBCNt3wjkBWDg5aCqfwG8rWWLsg5V86AM0sB849g9JjPjIdksTCIKg==" - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "vAJHd4yOpmKoK+jBuYV7a3y+Ab9U4ARCc29b6qvMy276RgJFw9LFs0DdsPqOL3ahwzyrX7tM+i4cCxU/RX0qAg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.5" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "/nYGrpa9/0BZofrVpBbbj+Ns8ZesiPE0V/KxsuHgDgHQopIzN54nRaQGSuvPw16/kI9sW1Zox5yyAPqvf0Jz6A==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "1/hQmONMWxRTKXuN0pQShQN9QsqIRTS1G4fdmKW0O9phuVZjyzIROQD9Fbfwyn2t+yvP8SzjatGAPX4jDRfgHg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4" - } - }, - "Microsoft.Extensions.Features": { - "type": "Transitive", - "resolved": "10.0.4", - "contentHash": "7to+nkZO+g/GiGQOBzAcrr8HcG8dXETI/hg58fJju0jPO9p/GvNLAis8kMPTBdsjfeTfslBrgFX9Yx1KRnKDww==" - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "nCBmCx0Xemlu65ZiWMcXbvfvtznKxf4/YYKF9R28QkqdI9lTikedGqzJ28/xmdGGsxUnsP5/3TQGpiPwVjK0dA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.FileProviders.Physical": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "dMu5kUPSfol1Rqhmr6nWPSmbFjDe9w6bkoKithG17bWTZA0UyKirTatM5mqYUN3mGpNA0MorlusIoVTh6J7o5g==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "mOE3ARusNQR0a5x8YOcnUbfyyXGqoAWQtEc7qFOfNJgruDWQLo39Re+3/Lzj5pLPFuFYj8hN4dgKzaSQDKiOCw==" - }, - "Microsoft.Extensions.Http.Diagnostics": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "ybx2QcCWROCnUCbSj/IyHXn1c58brjjHzTTbueKgBl/qHsWk69mu25mjQ3oaMsO1I0+EcS6AhVuhIopL2q3IDw==", - "dependencies": { - "Microsoft.Extensions.Http": "10.0.4", - "Microsoft.Extensions.Telemetry": "10.4.0" - } - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "+XTMKQyDWg4ODoNHU/BN3BaI1jhGO7VCS+BnzT/4IauiG6y2iPAte7MyD7rHKS+hNP0TkFkjrae8DFjDUxtcxg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "10.0.4", - "contentHash": "XPXoOpUnWEh0pV7Vl2DK2wj47y73Krhrve5OkPrvGIWdZ4U2r47WO8hEdv+wKn65Kh4pmDdiWm7Ibo5pZX+vig==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.4", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", - "Microsoft.Extensions.Configuration.Binder": "10.0.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.Logging": "10.0.4", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "91t1kPt6F+1cTJ4dZFY89BopLr1JyGlZ2pROIkIuyE28jUXhdelOzn22UwvNk8EwW/9x8D7GXyLqiMJShgIGhQ==" - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "MDaQMdUplw0AIRhWWmbLA7yQEXaLIHb+9CTroTiNS8OlI0LMXS4LCxtopqauiqGCWlRgJ+xyraVD8t6veRAFbw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "BB9uUW3+6Rxu1R97OB1H/13lUF8P2+H1+eDhpZlK30kDh/6E4EKHBUqTp+ilXQmZLzsRErxON8aBSR6WpUKJdg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Configuration.Binder": "10.0.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "/HUHJ0tw/LQvD0DZrz50eQy/3z7PfX7WWEaXnjKTV9/TNdcgFlNTZGo49QhS7PTmhDqMyHRMqAXSBxLh0vso4g==" - }, - "Microsoft.Extensions.Resilience": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "41CCbJJPsDWU6NsmKfANHkfT/+KCBlZZqQ1eBoQhhW0xqGCiWmUlMdi2BoaM/GcwKHX5WiQL/IESROmgk0Owfw==", - "dependencies": { - "Microsoft.Extensions.Diagnostics": "10.0.4", - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.4.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4", - "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0", - "Polly.Extensions": "8.4.2", - "Polly.RateLimiting": "8.4.2" - } - }, - "Microsoft.Extensions.ServiceDiscovery.Abstractions": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "HkBb7cdi27tkQiQw1anQFbXe+A3pjRwDKgVbd/DD9fMAO2X9abK0FEyM/tNVXjW3lwOWl2tF+Xij/DqI6i+JTg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", - "Microsoft.Extensions.Configuration.Binder": "10.0.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.Features": "10.0.4", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4", - "Microsoft.Extensions.Primitives": "10.0.4" - } - }, - "Microsoft.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "AbHleTzdpGPjA6RpOjKVHEYx7SoBRnJ2bwAbbPa3aGB7HiVwBmeTJhBGhtIBiuIW0VpKDS8x+bV5iWqpBRIf4w==", - "dependencies": { - "Microsoft.Extensions.AmbientMetadata.Application": "10.4.0", - "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.4.0", - "Microsoft.Extensions.Logging.Configuration": "10.0.4", - "Microsoft.Extensions.ObjectPool": "10.0.4", - "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0" - } - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "3b2uVa4voJfLLg39BPCKQS0ZgnpEZFkKf7YmnMVlM5FQJYBPOuePIQdnEK1/Oxd+w3GscxGYuE7IMOXDwixZtQ==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "10.4.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.ObjectPool": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4" - } - }, - "Microsoft.IdentityModel.Abstractions": { - "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "gSxKLWRZzBpIsEoeUPkxfywNCCvRvl7hkq146XHPk5vOQc9izSf1I+uL1vh4y2U19QPxd9Z8K/8AdWyxYz2lSg==" - }, - "Microsoft.IdentityModel.Logging": { - "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "MTzXmETkNQPACR7/XCXM1OGM6oU9RkyibqeJRtO9Ndew2LnGjMf9Atqj2VSf4XC27X0FQycUAlzxxEgQMWn2xQ==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.16.0" - } - }, - "Microsoft.Management.Infrastructure": { - "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "cGZi0q5IujCTVYKo9h22Pw+UwfZDV82HXO8HTxMG2HqntPlT3Ls8jY6punLp4YzCypJNpfCAu2kae3TIyuAiJw==", - "dependencies": { - "Microsoft.Management.Infrastructure.Runtime.Unix": "3.0.0", - "Microsoft.Management.Infrastructure.Runtime.Win": "3.0.0" - } - }, - "Microsoft.Management.Infrastructure.CimCmdlets": { - "type": "Transitive", - "resolved": "7.6.0", - "contentHash": "Th5W4CyHWLVGL8wiIlcTBKK7ggxLB+Tz3K9ixQzcBtdOtBo9O+iRNtiTyVgBwCkGrMxtc/HBLWUaCFAIIn327Q==", - "dependencies": { - "System.Management.Automation": "7.6.0" - } - }, - "Microsoft.Management.Infrastructure.Runtime.Unix": { - "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "QZE3uEDvZ0m7LabQvcmNOYHp7v1QPBVMpB/ild0WEE8zqUVAP5y9rRI5we37ImI1bQmW5pZ+3HNC70POPm0jBQ==" - }, - "Microsoft.Management.Infrastructure.Runtime.Win": { - "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "uwMyWN33+iQ8Wm/n1yoPXgFoiYNd0HzJyoqSVhaQZyJfaQrJR3udgcIHjqa1qbc3lS6kvfuUMN4TrF4U4refCQ==" - }, - "Microsoft.NET.Test.Sdk": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "WNpu6vI2rA0pXY4r7NKxCN16XRWl5uHu6qjuyVLoDo6oYEggIQefrMjkRuibQHm/NslIUNCcKftvoWAN80MSAg==", - "dependencies": { - "Microsoft.CodeCoverage": "18.0.1", - "Microsoft.TestPlatform.TestHost": "18.0.1" - } - }, - "Microsoft.PowerShell.Commands.Diagnostics": { - "type": "Transitive", - "resolved": "7.6.0", - "contentHash": "YaNBSTiD8pDmxMfK8MjbcX/k2QGt0kZQ58T/bkEqZE3oKUITcUsRRYYHtnFkeRSwbdGPC4Lfej9VaL7zbWSeXQ==", - "dependencies": { - "System.Management.Automation": "7.6.0" - } - }, - "Microsoft.PowerShell.Commands.Management": { - "type": "Transitive", - "resolved": "7.6.0", - "contentHash": "GS6Raa/avZbiOZNuEa2drr946bFvNzR6m4dlF3JhqUvz8Hp5gY226lHU4Pna1WTaAnhKNgnsmDJeFELw56UBhw==", - "dependencies": { - "Microsoft.PowerShell.Security": "7.6.0", - "System.Diagnostics.EventLog": "10.0.5", - "System.ServiceProcess.ServiceController": "10.0.5" - } - }, - "Microsoft.PowerShell.Commands.Utility": { - "type": "Transitive", - "resolved": "7.6.0", - "contentHash": "opNQxFiWdFMeCfpgXLlUAP1eg5u+gFQFBwvg+Er7auf1IDNkhU1psSSmtOU2d06/d5GjlqFRNywgzNnhywmDRg==", - "dependencies": { - "JsonSchema.Net": "7.4.0", - "Markdig.Signed": "0.44.0", - "Microsoft.CodeAnalysis.CSharp": "5.0.0", - "Microsoft.PowerShell.MarkdownRender": "7.2.1", - "Microsoft.Win32.SystemEvents": "10.0.5", - "System.Drawing.Common": "10.0.5", - "System.Management.Automation": "7.6.0" - } - }, - "Microsoft.PowerShell.ConsoleHost": { - "type": "Transitive", - "resolved": "7.6.0", - "contentHash": "3tW1hVYcCYMO9JtZRb5qtlPeHerx0un/W6SJeAZRKeJdTQh9e6wqm78VXdd28uY+SOeBgC/eYopQnTSv4xo/SA==", - "dependencies": { - "System.Management.Automation": "7.6.0" - } - }, - "Microsoft.PowerShell.CoreCLR.Eventing": { - "type": "Transitive", - "resolved": "7.6.0", - "contentHash": "bjNtp02ZuXhg6b28p6q+hoAhoSksHZ7cdVhCXX3vUqU0Zlvgl9FJlxFmGfL7ommIpIx/8j5eXO5Pth24LwDSnQ==", - "dependencies": { - "System.Diagnostics.EventLog": "10.0.5" - } - }, - "Microsoft.PowerShell.MarkdownRender": { - "type": "Transitive", - "resolved": "7.2.1", - "contentHash": "o5oUwL23R/KnjQPD2Oi49WAG5j4O4VLo1fPRSyM/aq0HuTrY2RnF4B3MCGk13BfcmK51p9kPlHZ1+8a/ZjO4Jg==", - "dependencies": { - "Markdig.Signed": "0.31.0" - } - }, - "Microsoft.PowerShell.Native": { - "type": "Transitive", - "resolved": "700.0.0-rc.1", - "contentHash": "lJOCErHTSWwCzfp3wgeyqhNRi4t43McDc0CHqlbt3Cj3OomiqPlNHQXujSbgd+0Ir6/8QAmvU/VOYgqCyMki6A==" - }, - "Microsoft.PowerShell.Security": { - "type": "Transitive", - "resolved": "7.6.0", - "contentHash": "sTSYo9zxWs+kl2TE9nTx5He7m4b4lcvF5yBpXEio9DN3KGw+lvh2vjFhOfpmVTPXubg/9hiLSnSs/zvgNdShGQ==", - "dependencies": { - "System.Management.Automation": "7.6.0" - } - }, - "Microsoft.Security.Extensions": { - "type": "Transitive", - "resolved": "1.4.0", - "contentHash": "MnHXttc0jHbRrGdTJ+yJBbGDoa4OXhtnKXHQw70foMyAooFtPScZX/dN+Nib47nuglc9Gt29Gfb5Zl+1lAuTeA==" - }, - "Microsoft.Testing.Extensions.CodeCoverage": { - "type": "Transitive", - "resolved": "18.4.1", - "contentHash": "l1VZM9dg9s76L5D288ipAT4HRYDJ6Vxh8wX20gfS9VnpueedRfN4/aGNn4oA1g6pwq2WSM3Ci7IoSSGPiqu+WQ==", - "dependencies": { - "Microsoft.DiaSymReader": "2.0.0", - "Microsoft.Extensions.DependencyModel": "8.0.2", - "Microsoft.Testing.Platform": "2.0.2" - } - }, - "Microsoft.Testing.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "5TwgTx2u7k9Al/xbZ18QXq4Hdy2xewkVTI6K3sk+jY2ykqUkIKNuj7rFu3GOV5KnEUkevhw6eZcyZs77STHJIA==", - "dependencies": { - "Microsoft.ApplicationInsights": "2.23.0", - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Extensions.TrxReport": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "cXmP225WcMLLOSrW8xekaNhfzdBwXX3cbXbE5qSzmLbK0KZe3z8rAObKj70FWiPPPzm2W22x0ZW93gsmAfK6Mg==", - "dependencies": { - "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Extensions.TrxReport.Abstractions": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "D8xmIJYQFJ6D49Rx5/vPrkZZxb338Jkew+eSqZLBfBiWKw4QZKy3i1BOXiLfz0lOmaNErwDz/YWRojCdNl+B9Q==", - "dependencies": { - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Extensions.VSTestBridge": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "bNRIEA2YoGr+Y+7LHdA7i1U80+7BAdf4K4Qh4Kx6eKkoBK/NV7QpoMg+GWPP0/eqAFzuUmUOIPVZ87Oo0Vyxmw==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "18.0.1", - "Microsoft.Testing.Extensions.Telemetry": "2.1.0", - "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Platform": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "aHkjNTGIA+Zbdw6RJgSFrbDrCjO0CgqpElqYcvkRSeUhBv2bKarnvU3ep786U7UqrPlArT/B7VmImRibJD0Zrg==" - }, - "Microsoft.Testing.Platform.MSBuild": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "UpfPebXQtHGrWz21+YLHmJSm+5zsuPE9U9pfdCtoB+67g75fDmWlNgpkH2ZmdVhSwkjNIed9Icg8Iu63z2ei5Q==", - "dependencies": { - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.TestPlatform.ObjectModel": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "qT/mwMcLF9BieRkzOBPL2qCopl8hQu6A1P7JWAoj/FMu5i9vds/7cjbJ/LLtaiwWevWLAeD5v5wjQJ/l6jvhWQ==" - }, - "Microsoft.TestPlatform.TestHost": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "uDJKAEjFTaa2wHdWlfo6ektyoh+WD4/Eesrwb4FpBFKsLGehhACVnwwTI4qD3FrIlIEPlxdXg3SyrYRIcO+RRQ==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "18.0.1", - "Newtonsoft.Json": "13.0.3" - } - }, - "Microsoft.Win32.Registry.AccessControl": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "1J6ooeZGeTSlM2vZdB1UHm9Y7vP8f/pS+Pd2JrqfjXLBZXrrby4rXBY6pP2k/Wb26CVm9TlEPjyWB2ryXT69LA==" - }, - "Microsoft.Win32.SystemEvents": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "a7rC0Qb5JGiA4f4ooqQjsx17LgYkb9feOcMNGyBXGqYmqC4ZoLbrV98zn7Kr5Z39BIU10Bti80Jwm/QAw+45VA==" - }, - "Microsoft.Windows.Compatibility": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "UPIGVEcJUFVw0zj1IA71HxumiE4ZLdPH46e6bau1Pnrx18UxbRxa98qb1RVK1hRrmzgQcvslyT03KtiLSaFExw==", - "dependencies": { - "Microsoft.Win32.Registry.AccessControl": "10.0.5", - "Microsoft.Win32.SystemEvents": "10.0.5", - "System.CodeDom": "10.0.5", - "System.ComponentModel.Composition": "10.0.5", - "System.ComponentModel.Composition.Registration": "10.0.5", - "System.Configuration.ConfigurationManager": "10.0.5", - "System.Data.Odbc": "10.0.5", - "System.Data.OleDb": "10.0.5", - "System.Data.SqlClient": "4.9.0", - "System.Diagnostics.EventLog": "10.0.5", - "System.Diagnostics.PerformanceCounter": "10.0.5", - "System.DirectoryServices": "10.0.5", - "System.DirectoryServices.AccountManagement": "10.0.5", - "System.DirectoryServices.Protocols": "10.0.5", - "System.Drawing.Common": "10.0.5", - "System.IO.Packaging": "10.0.5", - "System.IO.Ports": "10.0.5", - "System.Management": "10.0.5", - "System.Reflection.Context": "10.0.5", - "System.Runtime.Caching": "10.0.5", - "System.Security.Cryptography.Pkcs": "10.0.5", - "System.Security.Cryptography.ProtectedData": "10.0.5", - "System.Security.Cryptography.Xml": "10.0.5", - "System.Security.Permissions": "10.0.5", - "System.ServiceModel.Http": "8.1.2", - "System.ServiceModel.NetTcp": "8.1.2", - "System.ServiceModel.Primitives": "8.1.2", - "System.ServiceModel.Syndication": "10.0.5", - "System.ServiceProcess.ServiceController": "10.0.5", - "System.Speech": "10.0.5", - "System.Web.Services.Description": "8.1.2" - } - }, - "Microsoft.WSMan.Management": { - "type": "Transitive", - "resolved": "7.6.0", - "contentHash": "XohGKsxBbEFaBASEWveSBy+GTNOElQD8UBldmRjuhwnjix2FURj259W0qV2bj4OkzanWPPbNt6aiFSuupTATGg==", - "dependencies": { - "Microsoft.WSMan.Runtime": "7.6.0", - "System.Diagnostics.EventLog": "10.0.5", - "System.Management.Automation": "7.6.0", - "System.ServiceProcess.ServiceController": "10.0.5" - } - }, - "Microsoft.WSMan.Runtime": { - "type": "Transitive", - "resolved": "7.6.0", - "contentHash": "5tMrp/aoM6uIdUNe16CWEMzxQ2E1uqrl1wXaIc1KPlXDWk60v438s7ujCXVGb/gDUaOacOcYkOi94G/Vl/Fm2g==" - }, - "MimeKit": { - "type": "Transitive", - "resolved": "4.15.1", - "contentHash": "cxCcQhD0zhboFoG136jJuJtQjNRDJ+BxBm3f2vWn+53bff/CRo+K1mAkWjsW4Wuyy5O22F40MdMG2nRzQu1cJw==", - "dependencies": { - "BouncyCastle.Cryptography": "2.6.2", - "System.Security.Cryptography.Pkcs": "10.0.0" - } - }, - "MSTest.Analyzers": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "4ElL/aqomiUInr090VN4udqz46AuszXLrifHkLrgj0zb7na8eAoyUQt3BwDLTcGd1bSkmk3SfD02rZtKU+ZiqQ==" - }, - "MSTest.TestAdapter": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "bRW1Hftwq0XbcVExcAbj4YAfSZDRAziL0mygDkPBvaUe2nSsWFQIatze5lHVjPFJMvSFgWnItku4pguIy5FowQ==", - "dependencies": { - "MSTest.TestFramework": "4.1.0", - "Microsoft.Testing.Extensions.VSTestBridge": "2.1.0", - "Microsoft.Testing.Platform.MSBuild": "2.1.0" - } - }, - "MSTest.TestFramework": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "BzpvsK+CRbk6khwY62h+7HfYzIxtJXyPv9tOI9T90cy5CVy+WI1JkN4ZaNL4Dobqb6dywSwabLTIbPZKpdrr+A==", - "dependencies": { - "MSTest.Analyzers": "4.1.0" - } - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.4", - "contentHash": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==" - }, - "Npgsql": { - "type": "Transitive", - "resolved": "10.0.2", - "contentHash": "q5RfBI+wywJSFUNDE1L4ZbHEHCFTblo8Uf6A6oe4feOUFYiUQXyAf9GBh5qEZpvJaHiEbpBPkQumjEhXCJxdrg==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0" - } - }, - "OpenTelemetry": { - "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "7mS/oZFF8S6xyqGQfMU1btp0nXJQUPWV535Vp/XMLYwRAUv36xQN+U4vufWBF1+z4HnRTOwuFHtUSGnHbyN6FQ==", - "dependencies": { - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", - "Microsoft.Extensions.Logging.Configuration": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.0" - } - }, - "OpenTelemetry.Api": { - "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "vk5OGdf6K9kQScCWo3bRjhDWCv6Pqw92IpX4dlARZ8B1WL7/2NGTDtCkkw42eQf7UdwyoHKzVvMH/PtL8d6z7w==" - }, - "OpenTelemetry.Api.ProviderBuilderExtensions": { - "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "OnuSUlRpGvowkOzGFQfy+KZFu0cITfKfh2IYJJiZskxVJiOuexwOOuvfDAgpJdmTzVWAHjYdz2shcHZaJ06UjQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "OpenTelemetry.Api": "1.15.0" - } - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" - }, - "Polly.Extensions": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Polly.Core": "8.4.2" - } - }, - "Polly.RateLimiting": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", - "dependencies": { - "Polly.Core": "8.4.2", - "System.Threading.RateLimiting": "8.0.0" - } - }, - "runtime.android-arm.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "nZdjF2WSBDvYCkaeDC4tIXada+cuYdgLWKFgIEbgcuIfuC7dLyKKpsXKcBYm2utrymmBKgXpRElK37Ts/BKwHQ==" - }, - "runtime.android-arm64.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "fJilZhYkETJX2CDhZ/GsA6xgfDGdCugUIn2Gk/11mVA4HSn+5agco2z1xCjds9oMmnTYjQIZALwi311mDF2utA==" - }, - "runtime.android-x64.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "BXmMlyT9Mnkl4mxMw4jwFnOyGpT3ts+Q0qvbK3BiTDAJPkCuyRqFBPb4/QVSkG8DKjCq4rD3tbZx57gl/iKh3g==" - }, - "runtime.android-x86.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "5oj/cFputmPxRDXz9lTDEWCK1UAZbHkVPNhx6gPOBdB6esQ/dzW5YWWWrE8qd24OgKMIXfUGCUiv8X2MFvE7mw==" - }, - "runtime.linux-arm.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "EZiqHjxgvDakx9UYNfRjXtevIlggWdqBEExeZG7g7Zt1XksV8Oud2bwrWOK1PhnlROmXV3YDNE5wK9rHrMQqpg==" - }, - "runtime.linux-arm64.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "3ZEQMsHJ+HCJs+4z/4QdQpE6PhV4cOW5kob8kXYT8jf2MJ4oOELiAKy/GNuxB9mnpL3/IELIrZa7j/yPPQXqPw==" - }, - "runtime.linux-bionic-arm64.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "vrg5vcj+tSxrOlt9QpsoNg7RQVgj0di9ZywEAsoa+2Cg48ZuLuf5IaHSgCxYcU195GibrUaD3aqhPMuj8wBiIA==" - }, - "runtime.linux-bionic-x64.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "Sf3oMGv8fkyFgrS8v1R9r6hnyjjxLxWB5KRzoeER8joyxCsBhwCh7PtAjcZJwIY4yOxEaVoLkHQqgB55rUJdag==" - }, - "runtime.linux-musl-arm.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "TQMo+2NA4eB/7CLRVbEwDRu8NC+IKy6TTJKCUVufvgaVJTu3/6ZlONSUX1wtKszxxqMWs7M8ZVQ3J3sWn1IAAw==" - }, - "runtime.linux-musl-arm64.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "9KGCN0wsG9xSPzL3JSDdQfhZfsR2fV0pL1iLnvFzIvjTmqtMqe945QLK6lk7J6g7raqu5dDmWFs6atUlwuvI9A==" - }, - "runtime.linux-musl-x64.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "Wo1np+ez58KbmAx/DrLb93DPaxs4mlWKB20UFm+klTjBZkLR/E5fSijYYkJiQa8+QQ7DrgwpKocO5jveQ6TmyQ==" - }, - "runtime.linux-x64.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "LEui8jeftffYJWcqNB9NY1h2wjpvYNHpx56k6PfojNTEJVkDJX/O7t0LnfbIKqqnKNHEzfzzuc+kKqShlOC5YA==" - }, - "runtime.maccatalyst-arm64.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "sEpLosIuiDygUrLBY/Cb5QGksm+GVMFAbkHgsA4EI+xIwN64nm5t0RC7nYa5ir4Ow1rG7UPppLvld95Z1uMHbg==" - }, - "runtime.maccatalyst-x64.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "xR/JIRaO8iyCzOdJZuqb1/WZ14M71hfoqaS36a4p/X1EbDdVLM97UFPAAcwSVAmvQCKSn1Tf+gT43xtYdQeNUw==" - }, - "runtime.native.System.Data.SqlClient.sni": { - "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "A8v6PGmk+UGbfWo5Ixup0lPM4swuSwOiayJExZwKIOjTlFFQIsu3QnDXECosBEyrWSPryxBVrdqtJyhK3BaupQ==", - "dependencies": { - "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", - "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", - "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" - } - }, - "runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "N3CaTe3uSLjoi7uNnx83HEwPGgrAQz2JJ1KUorEMmMYBwwDavw+aalHNiYSEyfPGqvVRsetkZ42oAQx6dZj+WA==", - "dependencies": { - "runtime.android-arm.runtime.native.System.IO.Ports": "10.0.5", - "runtime.android-arm64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.android-x64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.android-x86.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-arm.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-arm64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-bionic-arm64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-bionic-x64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-musl-arm.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-musl-arm64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-musl-x64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.linux-x64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.maccatalyst-arm64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.maccatalyst-x64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.osx-arm64.runtime.native.System.IO.Ports": "10.0.5", - "runtime.osx-x64.runtime.native.System.IO.Ports": "10.0.5" - } - }, - "runtime.osx-arm64.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "Fj8EEw6yihufT95SJ+SQBjoxXiNLNIHB0pf9pO89Myd1IbdKASwi6llgQr7jcd/PdnuRoghxWgKKnYgRysWm/w==" - }, - "runtime.osx-x64.runtime.native.System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "y/RbVJGN17kifSSGUOUsfip6PkoE67s4aA7PO/Z0piYz2Da3OC8/mrDaiiHemt/+F/p5SiVEXfA30s0ccW4xGw==" - }, - "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { - "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" - }, - "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { - "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" - }, - "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { - "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" - }, - "Serilog": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "+cDryFR0GRhsGOnZSKwaDzRRl4MupvJ42FhCE4zhQRVanX0Jpg6WuCBk59OVhVDPmab1bB+nRykAnykYELA9qQ==" - }, - "Serilog.Extensions.Hosting": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Serilog": "4.3.0", - "Serilog.Extensions.Logging": "10.0.0" - } - }, - "Serilog.Extensions.Logging": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", - "dependencies": { - "Microsoft.Extensions.Logging": "10.0.0", - "Serilog": "4.2.0" - } - }, - "Serilog.Formatting.Compact": { - "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "Serilog.Settings.Configuration": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "LNq+ibS1sbhTqPV1FIE69/9AJJbfaOhnaqkzcjFy95o+4U+STsta9mi97f1smgXsWYKICDeGUf8xUGzd/52/uA==", - "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "10.0.0", - "Microsoft.Extensions.DependencyModel": "10.0.0", - "Serilog": "4.3.0" - } - }, - "Serilog.Sinks.Debug": { - "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "SQLitePCLRaw.bundle_e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "DC4nA7yWnf4UZdgJDF+9Mus4/cb0Y3Sfgi3gDnAoKNAIBwzkskNAbNbyu+u4atT0ruVlZNJfwZmwiEwE5oz9LQ==", - "dependencies": { - "SQLitePCLRaw.lib.e_sqlite3": "2.1.11", - "SQLitePCLRaw.provider.e_sqlite3": "2.1.11" - } - }, - "SQLitePCLRaw.core": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "PK0GLFkfhZzLQeR3PJf71FmhtHox+U3vcY6ZtswoMjrefkB9k6ErNJEnwXqc5KgXDSjige2XXrezqS39gkpQKA==" - }, - "SQLitePCLRaw.lib.e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "Ev2ytaXiOlWZ4b3R67GZBsemTINslLD1DCJr2xiacpn4tbapu0Q4dHEzSvZSMnVWeE5nlObU3VZN2p81q3XOYQ==" - }, - "SQLitePCLRaw.provider.e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "Y/0ZkR+r0Cg3DQFuCl1RBnv/tmxpIZRU3HUvelPw6MVaKHwYYR8YNvgs0vuNuXCMvlyJ+Fh88U1D4tah1tt6qw==", - "dependencies": { - "SQLitePCLRaw.core": "2.1.11" - } - }, - "System.CodeDom": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "hGZWDDJh1U6t7fy3iO4HlZYK1ur1fWE3sTqTNHkHk0Leh0JUcxYM//JtLBNG5g+6D2Lt0+aHH8rc7e5oIlNgCg==" - }, - "System.ComponentModel.Composition": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "Yi8nY2EKRZlZYRPxQ1/E4rrYs6QD1H0UgfcfHhKsCVhNJ4lNULLbly6Dtz6CjH6gZKBf2hZYXzzzzVGhpGLBvw==" - }, - "System.ComponentModel.Composition.Registration": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "yaeiTK8VYzgD67+bmB/vu+CxwnPCfFLD0+e0jeOLDgcdNoUTx6j3uMv/QI3r4PecPZQw1xriXdfqfhqvvyx7qg==", - "dependencies": { - "System.ComponentModel.Composition": "10.0.5", - "System.Reflection.Context": "10.0.5" - } - }, - "System.Configuration.ConfigurationManager": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "9UHU7hldEOVgcOHUX7Pa+owDfpzhW+a1gshEvyknAoDA++G6FV+N1cPoUbtsXEO7GgPErGSg8MHrI/YqrLoiGA==", - "dependencies": { - "System.Diagnostics.EventLog": "10.0.5", - "System.Security.Cryptography.ProtectedData": "10.0.5" - } - }, - "System.Data.Odbc": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "nLtGLGJYf0jfVNH7004s5N3a6setHGhh/pRJTqq1U5bBx3TOaV9gDtZomi1IcacAoX9UwmVflXdViuw5UzEXAw==" - }, - "System.Data.OleDb": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "ZQpXcFu9i0MO2UnoD0KjaFCrB3bZ2Yzk8YdML2/PRU7U2QIWYzCpkkMJXUamG7gwowTuXmLm3eXDKiU8fM0cQg==", - "dependencies": { - "System.Configuration.ConfigurationManager": "10.0.5", - "System.Diagnostics.PerformanceCounter": "10.0.5" - } - }, - "System.Data.SqlClient": { - "type": "Transitive", - "resolved": "4.9.1", - "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", - "dependencies": { - "runtime.native.System.Data.SqlClient.sni": "4.4.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "wugvy+pBVzjQEnRs9wMTWwoaeNFX3hsaHeVHFDIvJSWXp7wfmNWu3mxAwBIE6pyW+g6+rHa1Of5fTzb0QVqUTA==" - }, - "System.Diagnostics.PerformanceCounter": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "2fdEqAn8xpPNW7g7BDwsvWw9BGG4m8yu2+qqRFE02nypN4urVdzp3kT42e6pION9RHGkEUFHnrBLXcUQ2+Ws2w==", - "dependencies": { - "System.Configuration.ConfigurationManager": "10.0.5" - } - }, - "System.DirectoryServices": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "1AbKZ7Jh/kN7U7BPf5fLWMXjaXeSCCSL8OLvs1aM2P4FJL1+BATcnIjhUgG3pcmII0aFN+tWS/rX0iBZkX9AVw==" - }, - "System.DirectoryServices.AccountManagement": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "gWbJuEXT8wmdjz3tWuqCs7fj5ak1TKJxJfG+PBt7WFqBkVsMbjQ1VJcR2ZoPgTeRHcHqHdjA04MLBJ6Eq8QgEw==", - "dependencies": { - "System.Configuration.ConfigurationManager": "10.0.5", - "System.DirectoryServices": "10.0.5", - "System.DirectoryServices.Protocols": "10.0.5" - } - }, - "System.DirectoryServices.Protocols": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "9cxxK3ulK9KHqifCyvxvATTYNda1WxZxvrC41loC/9j1/+qF6q/E2RCgqSNrKWB7WtFNDOWuJQSOoPF88OTskQ==" - }, - "System.Drawing.Common": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "FYgPPbii/9Prh7RuY1gaxSyik7Ysw594K0uCHggDxHDgl7mfk8c4UlwluKjQoMquVGLce7Jld4DjjsnuYK3m7g==", - "dependencies": { - "Microsoft.Win32.SystemEvents": "10.0.5" - } - }, - "System.IO.Packaging": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "ygK00KGbFHlZZmcO5ihqdrsMeFQ0liD2qQ+Yz/30G5ZOyeh3aHBEfVIRPBNFBE0epnwjbIrjLdDvLP3iBmsCcg==" - }, - "System.IO.Ports": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "tUlRZNFQ5c5SHZourJdX4DecbJYXHgWOsYxsvsPT3UxCL0Na0YA1awzGZu91Q2Lo6obt57b1o0IqP7ABLGvWPA==", - "dependencies": { - "runtime.native.System.IO.Ports": "10.0.5" - } - }, - "System.Management": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "JhBVxvWhUJ0KAquUK0dMnc3a1Ol4JyH8fMrMQZ9GgEUkrtvPy8DE57SDnGnuvOdI0maJOdguxw87N5bh2eL87A==", - "dependencies": { - "System.CodeDom": "10.0.5" - } - }, - "System.Management.Automation": { - "type": "Transitive", - "resolved": "7.6.0", - "contentHash": "S/AVZCBLZAsfZ+Oe29GuH45bi8Gi5inskQ4IE8Q5bvgtuF4AIwuXPkpnZK5nzF+9XDz+hF31yS8w1C15HvZhlg==", - "dependencies": { - "Microsoft.ApplicationInsights": "2.23.0", - "Microsoft.Management.Infrastructure": "3.0.0", - "Microsoft.PowerShell.CoreCLR.Eventing": "7.6.0", - "Microsoft.PowerShell.Native": "700.0.0-rc.1", - "Microsoft.Security.Extensions": "1.4.0", - "Microsoft.Win32.Registry.AccessControl": "10.0.5", - "Newtonsoft.Json": "13.0.4", - "System.CodeDom": "10.0.5", - "System.Configuration.ConfigurationManager": "10.0.5", - "System.Diagnostics.EventLog": "10.0.5", - "System.DirectoryServices": "10.0.5", - "System.Management": "10.0.5", - "System.Security.Cryptography.Pkcs": "10.0.5", - "System.Security.Cryptography.ProtectedData": "10.0.5", - "System.Security.Permissions": "10.0.5", - "System.Windows.Extensions": "10.0.5" - } - }, - "System.Net.Http.WinHttpHandler": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "Ov7L6Ab7BSMq7o6quFalQZW5lFQPvVrZwUOXFqUD+WufOezhWY5cRts8z0eCla8FQr549eJzsYssfLJOXZMVIA==" - }, - "System.Reflection.Context": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "DAAArz6bs7EMcndUH5eKd7A/963OKFA7RWB5kyQpp7/ze7Is3mlVAcCVCRDpxIVmlFJ83sVFO4LxTPm7joxo4w==" - }, - "System.Runtime.Caching": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "bEwpkbmj1Ep8ioRI7M8eoPpgp6rHXHu1D+e2lCXqDYBChPOKA09TwEbIkzZk+Dwueh4kVZOXOWpzMY/LsgND/g==", - "dependencies": { - "System.Configuration.ConfigurationManager": "10.0.5" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "BJEYUZfXpkPIHo2+oFoUemD5CPMFHPJOkRzXrbj/iZrWsjga3ypj8Rqd9bFlSLupEH4IIdD/aBWm/V1gCiBL9w==" - }, - "System.Security.Cryptography.Xml": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "1FW536WbzEWa/+UmSroCtfuTEPh3ueOnFtD0jEZP6xreGMf8/cSHDUFNpVUq4pXvvvVl4WMgBgavjxu5zTj+uw==", - "dependencies": { - "System.Security.Cryptography.Pkcs": "10.0.5" - } - }, - "System.Security.Permissions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "mhNFWI/5ljeEUT4nsJFK5ykecpyelRwN6Hy1x0hIJoqs5ssHJ9jr7hIkrjhbiE2Y4usuG1FpZr9S00Oei49aMg==", - "dependencies": { - "System.Windows.Extensions": "10.0.5" - } - }, - "System.ServiceModel.Http": { - "type": "Transitive", - "resolved": "10.0.652802", - "contentHash": "G02XZvmccf42QCU5MjviBIg69MSMAVHwL1inVPsNSpfp5g+t5BkQM3DyvWRLN4qmeFDWSF/mA1rIYONIDu/6Dg==", - "dependencies": { - "System.ServiceModel.Primitives": "10.0.652802" - } - }, - "System.ServiceModel.NetFramingBase": { - "type": "Transitive", - "resolved": "10.0.652802", - "contentHash": "8/wx/Xnfm9LmGmK0banr05JJYNZmJzlxa8J5lfR7v3MM78QzSG8C3/HDi0/BjlOMeMZd21sX7oEFUhoucrk49w==", - "dependencies": { - "System.ServiceModel.Primitives": "10.0.652802" - } - }, - "System.ServiceModel.NetTcp": { - "type": "Transitive", - "resolved": "10.0.652802", - "contentHash": "VFQgu0IRWUPuPTxHZkMmhPNGYqcu9RwpFcZpW5L941dunUY8nJAErtAWEZYKnj2zAWsm/88nLAEoFc4cuoC2zw==", - "dependencies": { - "System.ServiceModel.NetFramingBase": "10.0.652802", - "System.ServiceModel.Primitives": "10.0.652802" - } - }, - "System.ServiceModel.Primitives": { - "type": "Transitive", - "resolved": "10.0.652802", - "contentHash": "ULfGNl75BNXkpF42wNV2CDXJ64dUZZEa8xO2mBsc4tqbW9QjruxjEB6bAr4Z/T1rNU+leOztIjCJQYsBGFWYlw==", - "dependencies": { - "Microsoft.Extensions.ObjectPool": "10.0.0", - "System.Security.Cryptography.Xml": "10.0.0" - } - }, - "System.ServiceModel.Syndication": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "lMzvEBS8dnq+TH4Ff50abQRMlbVTTBMenAmv/ILyaY3Mpf4+k/IlQtIl3uAyoNX/nXfKZp+1NyBWpxDSsMs6iA==" - }, - "System.ServiceProcess.ServiceController": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "L7pataU51CVJkdfIxpH6wY1buML9zsi9ZVWYaCOLM1AMpd4wQ0StzbOb8OGZAfwCyK/oyKEYcCZrWAi4GgP3lg==", - "dependencies": { - "System.Diagnostics.EventLog": "10.0.5" - } - }, - "System.Speech": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "MYkGiMGWYc9rhyvsmf2UGIHD4RVJ3+uNgllFPP1YW6ILJJDXpDN8jMcy++0E/KrG507kTPCo5EOW4tEwUOCKhQ==" - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "System.Web.Services.Description": { - "type": "Transitive", - "resolved": "8.1.2", - "contentHash": "FziIBleSpygZOBudSeMkawLgfarnSam7paGkTtV9ITyTmw/TdEqB+moS0TeApmNfAMWGbcWXDXr3djckuLgGDg==" - }, - "System.Windows.Extensions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "5hVP2TIgEqqA590MnKmMN5+Fgzl6xBRjR1wbgC3M1znrZZJe63TwBPN+ymaMgwT0vjsiXk95AjMAe8SAhhJSTg==" - }, - "TimeZoneConverter": { - "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "sFbY65N/5GdsHx7nkdHFHUG+5Ar4W0w6Aks7Y2X+Q4NOTw6XyX2Il7jm+4tPkc//4mA3nG0RdxI8gKgoJitdLw==" - }, - "werkr.agent": { - "type": "Project", - "dependencies": { - "Grpc.AspNetCore": "[2.76.0, )", - "MailKit": "[4.15.1, )", - "Microsoft.PowerShell.SDK": "[7.6.0, )", - "Serilog.AspNetCore": "[10.0.0, )", - "Serilog.Sinks.Console": "[6.1.1, )", - "Serilog.Sinks.File": "[7.0.0, )", - "Serilog.Sinks.OpenTelemetry": "[4.2.0, )", - "Werkr.Common": "[1.0.0, )", - "Werkr.Core": "[1.0.0, )", - "Werkr.Data": "[1.0.0, )", - "Werkr.ServiceDefaults": "[1.0.0, )" - } - }, - "werkr.common": { - "type": "Project", - "dependencies": { - "Google.Protobuf": "[3.34.1, )", - "Microsoft.AspNetCore.Authorization": "[10.0.5, )", - "Microsoft.Extensions.Configuration.Json": "[10.0.5, )", - "Microsoft.IdentityModel.Tokens": "[8.16.0, )", - "TimeZoneNames": "[7.0.0, )", - "Werkr.Common.Configuration": "[1.0.0, )" - } - }, - "werkr.common.configuration": { - "type": "Project" - }, - "werkr.core": { - "type": "Project", - "dependencies": { - "Grpc.Net.Client": "[2.76.0, )", - "MailKit": "[4.15.1, )", - "Microsoft.Extensions.Hosting.Abstractions": "[10.0.5, )", - "System.Security.Cryptography.ProtectedData": "[10.0.5, )", - "Werkr.Common": "[1.0.0, )", - "Werkr.Data": "[1.0.0, )" - } - }, - "werkr.data": { - "type": "Project", - "dependencies": { - "EFCore.NamingConventions": "[10.0.1, )", - "Microsoft.EntityFrameworkCore": "[10.0.5, )", - "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.5, )", - "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.1, )", - "Werkr.Common": "[1.0.0, )" - } - }, - "werkr.servicedefaults": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Http.Resilience": "[10.4.0, )", - "Microsoft.Extensions.ServiceDiscovery": "[10.4.0, )", - "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.15.0, )", - "OpenTelemetry.Extensions.Hosting": "[1.15.0, )", - "OpenTelemetry.Instrumentation.AspNetCore": "[1.15.1, )", - "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.15.0-beta.1, )", - "OpenTelemetry.Instrumentation.GrpcNetClient": "[1.15.0-beta.1, )", - "OpenTelemetry.Instrumentation.Http": "[1.15.0, )", - "OpenTelemetry.Instrumentation.Runtime": "[1.15.0, )" - } - }, - "EFCore.NamingConventions": { - "type": "CentralTransitive", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "Xs5k8XfNKPkkQSkGmZkmDI1je0prLTdxse+s8PgTFZxyBrlrTLzTBUTVJtQKSsbvu4y+luAv8DdtO5SALJE++A==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "[10.0.1, 11.0.0)", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.1, 11.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1" - } - }, - "Google.Protobuf": { - "type": "CentralTransitive", - "requested": "[3.34.1, )", - "resolved": "3.34.1", - "contentHash": "212vdYxRuVopGE5bess6Jg5oXWyizA6hcLPTI7G+qA4PthQEvfeof3njT+7VSY5v/+O0P22xTydiP5fSJJpGEA==" - }, - "Grpc.AspNetCore": { - "type": "CentralTransitive", - "requested": "[2.76.0, )", - "resolved": "2.76.0", - "contentHash": "LyXMmpN2Ba0TE35SOLSKbGqIYtJuhc1UgiaGfoW1X8KJERV70QI5KGW+ckEY7MrXoFWN/uWo4B70siVhbDmCgQ==", - "dependencies": { - "Google.Protobuf": "3.31.1", - "Grpc.AspNetCore.Server.ClientFactory": "2.76.0", - "Grpc.Tools": "2.76.0" - } - }, - "Grpc.Net.Client": { - "type": "CentralTransitive", - "requested": "[2.76.0, )", - "resolved": "2.76.0", - "contentHash": "K1oldmqw2+Gn69nGRzZLhqSiUZwelX1GrBu/cUl9wNf1C0uB61vFS6JcxUUv9P8VoUJhFsmV44JA6lI2EUt4xw==", - "dependencies": { - "Grpc.Net.Common": "2.76.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.0" - } - }, - "Grpc.Net.ClientFactory": { - "type": "CentralTransitive", - "requested": "[2.76.0, )", - "resolved": "2.76.0", - "contentHash": "XI+kO69L9AV8B9N0UQOmH911r6MOEp9huHiavEsY56DJYuzJ9KAxNGy37dpV6CLbgCaN2uKmpOsZ9Pao6bmpVQ==", - "dependencies": { - "Grpc.Net.Client": "2.76.0", - "Microsoft.Extensions.Http": "8.0.0" - } - }, - "Grpc.Tools": { - "type": "CentralTransitive", - "requested": "[2.78.0, )", - "resolved": "2.78.0", - "contentHash": "6jPG2gHon+w2PczW8jjrCRnW/g9eEfCdd7aK6mDooptWtuPsV3ZxAwKKEx7LGEDVoT4c2SViRl8Yu3L1XiWIIg==" - }, - "MailKit": { - "type": "CentralTransitive", - "requested": "[4.15.1, )", - "resolved": "4.15.1", - "contentHash": "4mLbqTbH3ctd0NlukHjVQbU3ZnNDuCtB6ttNZDLPZLWMA2Dr31rh/eCSTqOwDojUX8zfDOVaxstMgJTE9PwZNA==", - "dependencies": { - "MimeKit": "4.15.1" - } - }, - "Microsoft.AspNetCore.Authorization": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "NbFi4wN6fUvZK4AKmixpfx0IvqtVimKEn8ZX28LkzZBVo09YnLbyRrJ1001IVQDLbV+aYpS/cLhVJu5JD0rY5A==", - "dependencies": { - "Microsoft.AspNetCore.Metadata": "10.0.5", - "Microsoft.Extensions.Diagnostics": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.Data.Sqlite.Core": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "jFYXnh7s0RShCw6Vkf+ReGCw+mVi7ISg1YaEzYCJcXnUifmbW+aqvCsRJuSRj2ZuQ+oqetpjxlZtbpMmk5FKqQ==", - "dependencies": { - "SQLitePCLRaw.core": "2.1.11" - } - }, - "Microsoft.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "9tNBmK3EpYVGRQLiqP+bqK2m+TD0Gv//4vCzR7ZOgl4FWzCFyOpYdIVka13M4kcBdPdSJcs3wbHr3rmzOqbIMA==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "10.0.5", - "Microsoft.EntityFrameworkCore.Analyzers": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5" - } - }, - "Microsoft.EntityFrameworkCore.Sqlite": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "lxeRviglTkkmzYJVJ600yb6gJjnf5za9v7uH+0byuSXTGv7U8cT6hz7qRTmiGSOfLcl86QFdy2BBKaUFd6NQug==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Sqlite.Core": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyModel": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "SQLitePCLRaw.bundle_e_sqlite3": "2.1.11", - "SQLitePCLRaw.core": "2.1.11" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "P09QpTHjqHmCLQOTC+WyLkoRNxek4NIvfWt+TnU0etoDUSRxcltyd6+j/ouRbMdLR0j44GqGO+lhI2M4fAHG4g==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.Json": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "brBM/WP0YAUYh2+QqSYVdK8eQHYQTtTEUJXJ+84Zkdo2buGLja9VSrMIhgoeBUU7JBmcskAib8Lb/N83bvxgYQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.5", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "+Wb7KAMVZTomwJkQrjuPTe5KBzGod7N8XeG+ScxRlkPOB4sZLG4ccVwjV4Phk5BCJt7uIMnGHVoN6ZMVploX+g==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Http": { - "type": "CentralTransitive", - "requested": "[10.0.4, )", - "resolved": "10.0.4", - "contentHash": "QRbs+A+WfiGTnV9KFNfWlF+My5euQNZnsvdVMulwRN6C/tEPaF+ZlQfedHoNvFHKLwjQMmqwm4z+TSO9eLvRQw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.Diagnostics": "10.0.4", - "Microsoft.Extensions.Logging": "10.0.4", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4" - } - }, - "Microsoft.Extensions.Http.Resilience": { - "type": "CentralTransitive", - "requested": "[10.4.0, )", - "resolved": "10.4.0", - "contentHash": "HbkUsPUC7vLy2TaDbdA9aooW64n9yX4sUppRuiJ1cOzzU1FUW+MVEotm6kYVq6AuUI9xwFSBhRFzA03blmk3VA==", - "dependencies": { - "Microsoft.Extensions.Http.Diagnostics": "10.4.0", - "Microsoft.Extensions.ObjectPool": "10.0.4", - "Microsoft.Extensions.Resilience": "10.4.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "9HOdqlDtPptVcmKAjsQ/Nr5Rxfq6FMYLdhvZh1lVmeKR738qeYecQD7+ldooXf+u2KzzR1kafSphWngIM3C6ug==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.ServiceDiscovery": { - "type": "CentralTransitive", - "requested": "[10.4.0, )", - "resolved": "10.4.0", - "contentHash": "RznZAH6L4RNvroECT5JpqfFQJjHTn+8N7+ThSgYutbshkuymFeL/uBIZt1CM8LOdpPPhn4//a5fLUah9/k7ayQ==", - "dependencies": { - "Microsoft.Extensions.Http": "10.0.4", - "Microsoft.Extensions.ServiceDiscovery.Abstractions": "10.4.0" - } - }, - "Microsoft.IdentityModel.Tokens": { - "type": "CentralTransitive", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "rtViGJcGsN7WcfUNErwNeQgjuU5cJNl6FDQsfi9TncwO+Epzn0FTfBsg3YuFW1Q0Ch/KPxaVdjLw3/+5Z5ceFQ==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.IdentityModel.Logging": "8.16.0" - } - }, - "Npgsql.EntityFrameworkCore.PostgreSQL": { - "type": "CentralTransitive", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "P6EwH0Q4xkaA264iNZDqCPhWt8pscfUGxXazDQg4noBfqjoOlk4hKWfvBjF9ZX3R/9JybRmmJfmxr2iBMj0EpA==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", - "Npgsql": "10.0.2" - } - }, - "OpenTelemetry.Exporter.OpenTelemetryProtocol": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "VH8ANc/js9IRvfYt0Q2UaAxNCOWm+IU+vWrtoH7pfx4oWPVdISUt+9uWfBCFMWZg5WzQip5dhslyDjeyZXXfSQ==", - "dependencies": { - "OpenTelemetry": "1.15.0" - } - }, - "OpenTelemetry.Extensions.Hosting": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "RixjKyB1pbYGhWdvPto4KJs+exdQknJsnjUO9WszdLles5Vcd0EYzxPNJdwmLjYfP+Jfbr4B5nktM4ZgeHSWtg==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", - "OpenTelemetry": "1.15.0" - } - }, - "OpenTelemetry.Instrumentation.AspNetCore": { - "type": "CentralTransitive", - "requested": "[1.15.1, )", - "resolved": "1.15.1", - "contentHash": "wXaZTu6LHY8xcbRd6ClcrtjHqGVoGYCcArXEZA3iUjUcYSVYwDGyPU0PdkwTfylxv8JeCCVDQhVb0fT7xBJjGA==", - "dependencies": { - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[1.15.0-beta.1, )", - "resolved": "1.15.0-beta.1", - "contentHash": "N01GzP+r8lpSBiqjRX0/WjSp17r+zk6dKvGKthiASyFzF44lrJo8cA3ihXnw3p4Rnqg1mVjOYy19R6iJ84NTpg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.GrpcNetClient": { - "type": "CentralTransitive", - "requested": "[1.15.0-beta.1, )", - "resolved": "1.15.0-beta.1", - "contentHash": "SBas5+C4kGUqoy8OPpQis+QIgJ7/aaJl4H3oLzHCJnZLCb8TXZmQL2/r753RXXJUH8oIeLIzdW+EXgujSy+cpQ==", - "dependencies": { - "OpenTelemetry": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.Http": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "uToc7bUp8IEdb0ny9mKsL6FrrYelINPzxxiSShJgOf4XmQc4Azww6S5RjRj24YhsOn2a1MABOrxfVTZXtDk4Eg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.Runtime": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "OOvpqR/j2Pb6+tWhHNODIbSJ53Or/MDtTiXEyrsWI02K2lLAgvBFcxUOrHggS/8015cYR3AdSaXv6NZrkz5yQA==", - "dependencies": { - "OpenTelemetry.Api": "[1.15.0, 2.0.0)" - } - }, - "Serilog.AspNetCore": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "a/cNa1mY4On1oJlfGG1wAvxjp5g7OEzk/Jf/nm7NF9cWoE7KlZw1GldrifUBWm9oKibHkR7Lg/l5jy3y7ACR8w==", - "dependencies": { - "Serilog": "4.3.0", - "Serilog.Extensions.Hosting": "10.0.0", - "Serilog.Formatting.Compact": "3.0.0", - "Serilog.Settings.Configuration": "10.0.0", - "Serilog.Sinks.Console": "6.1.1", - "Serilog.Sinks.Debug": "3.0.0", - "Serilog.Sinks.File": "7.0.0" - } - }, - "Serilog.Sinks.Console": { - "type": "CentralTransitive", - "requested": "[6.1.1, )", - "resolved": "6.1.1", - "contentHash": "8jbqgjUyZlfCuSTaJk6lOca465OndqOz3KZP6Cryt/IqZYybyBu7GP0fE/AXBzrrQB3EBmQntBFAvMVz1COvAA==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "Serilog.Sinks.File": { - "type": "CentralTransitive", - "requested": "[7.0.0, )", - "resolved": "7.0.0", - "contentHash": "fKL7mXv7qaiNBUC71ssvn/dU0k9t0o45+qm2XgKAlSt19xF+ijjxyA3R6HmCgfKEKwfcfkwWjayuQtRueZFkYw==", - "dependencies": { - "Serilog": "4.2.0" - } - }, - "Serilog.Sinks.OpenTelemetry": { - "type": "CentralTransitive", - "requested": "[4.2.0, )", - "resolved": "4.2.0", - "contentHash": "PzMCyE5G19tjr5IZEi5qg+4UU5QrxBEoBEMu/hhYybTrGKXqUDiSGWKZNUDBgelaVKqLADlsmlJVyKce5SyPrg==", - "dependencies": { - "Google.Protobuf": "3.30.1", - "Grpc.Net.Client": "2.70.0", - "Serilog": "4.2.0" - } - }, - "System.Security.Cryptography.ProtectedData": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "kxR4O/8o32eNN3m4qbLe3UifYqeyEpallCyVAsLvL5ZFJVyT3JCb+9du/WHfC09VyJh1Q+p/Gd4+AwM7Rz4acg==" - }, - "TimeZoneNames": { - "type": "CentralTransitive", - "requested": "[7.0.0, )", - "resolved": "7.0.0", - "contentHash": "zc1sIJZMDH7pPO1Gqte9yjMEFSILShTRNuxVxnNdiZP4NGGSi3ZGe2OSrW2phjzM/QKe3pKOwUXfQmJMjDBOKQ==", - "dependencies": { - "TimeZoneConverter": "7.0.0" - } - } - } - } +{ + "version": 2, + "dependencies": { + "net10.0": { + "Microsoft.Extensions.TimeProvider.Testing": { + "type": "Direct", + "requested": "[10.4.0, )", + "resolved": "10.4.0", + "contentHash": "uJ8n9WUEzux9I2CjZh7imGBgZadfwhAKlxuBq7GsNGL8FJF81aHXAYaRMnwW+9EvRFQNytu7xo1ffeuuTncAzg==" + }, + "Microsoft.PowerShell.SDK": { + "type": "Direct", + "requested": "[7.6.0, )", + "resolved": "7.6.0", + "contentHash": "35NE9e2KkMqgtBQjUYT0aagNIMTPw3NUsN/PqbO/qSxkIyZkVC5rDbNu5xwts0uGtp6SAlclX5HOHJvvY3Fh5Q==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "10.0.5", + "Microsoft.Extensions.ObjectPool": "10.0.5", + "Microsoft.Management.Infrastructure.CimCmdlets": "7.6.0", + "Microsoft.PowerShell.Commands.Diagnostics": "7.6.0", + "Microsoft.PowerShell.Commands.Management": "7.6.0", + "Microsoft.PowerShell.Commands.Utility": "7.6.0", + "Microsoft.PowerShell.ConsoleHost": "7.6.0", + "Microsoft.PowerShell.Security": "7.6.0", + "Microsoft.WSMan.Management": "7.6.0", + "Microsoft.Win32.Registry.AccessControl": "10.0.5", + "Microsoft.Win32.SystemEvents": "10.0.5", + "Microsoft.Windows.Compatibility": "10.0.5", + "System.CodeDom": "10.0.5", + "System.ComponentModel.Composition": "10.0.5", + "System.ComponentModel.Composition.Registration": "10.0.5", + "System.Configuration.ConfigurationManager": "10.0.5", + "System.Data.Odbc": "10.0.5", + "System.Data.OleDb": "10.0.5", + "System.Data.SqlClient": "4.9.1", + "System.Diagnostics.EventLog": "10.0.5", + "System.Diagnostics.PerformanceCounter": "10.0.5", + "System.DirectoryServices": "10.0.5", + "System.DirectoryServices.AccountManagement": "10.0.5", + "System.DirectoryServices.Protocols": "10.0.5", + "System.Drawing.Common": "10.0.5", + "System.IO.Packaging": "10.0.5", + "System.IO.Ports": "10.0.5", + "System.Management": "10.0.5", + "System.Management.Automation": "7.6.0", + "System.Net.Http.WinHttpHandler": "10.0.5", + "System.Reflection.Context": "10.0.5", + "System.Runtime.Caching": "10.0.5", + "System.Security.Cryptography.Pkcs": "10.0.5", + "System.Security.Cryptography.ProtectedData": "10.0.5", + "System.Security.Cryptography.Xml": "10.0.5", + "System.Security.Permissions": "10.0.5", + "System.ServiceModel.Http": "10.0.652802", + "System.ServiceModel.NetFramingBase": "10.0.652802", + "System.ServiceModel.NetTcp": "10.0.652802", + "System.ServiceModel.Primitives": "10.0.652802", + "System.ServiceModel.Syndication": "10.0.5", + "System.ServiceProcess.ServiceController": "10.0.5", + "System.Speech": "10.0.5", + "System.Windows.Extensions": "10.0.5", + "runtime.android-arm.runtime.native.System.IO.Ports": "10.0.5", + "runtime.android-arm64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.android-x64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.android-x86.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-arm.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-arm64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-bionic-arm64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-bionic-x64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-musl-arm.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-musl-arm64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-musl-x64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-x64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.maccatalyst-arm64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.maccatalyst-x64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.native.System.IO.Ports": "10.0.5", + "runtime.osx-arm64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.osx-x64.runtime.native.System.IO.Ports": "10.0.5" + } + }, + "MSTest": { + "type": "Direct", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "2bk47yg7HcHRyf6Zf0XgCZicTVTQj4D5lonYTO7lWMxCQB+x66VrQNc2dADBfzthKXfHaA37m8i+VV5h6SbWiA==", + "dependencies": { + "MSTest.TestAdapter": "4.1.0", + "MSTest.TestFramework": "4.1.0", + "Microsoft.NET.Test.Sdk": "18.0.1", + "Microsoft.Testing.Extensions.CodeCoverage": "18.4.1", + "Microsoft.Testing.Extensions.TrxReport": "2.1.0" + } + }, + "BouncyCastle.Cryptography": { + "type": "Transitive", + "resolved": "2.6.2", + "contentHash": "7oWOcvnntmMKNzDLsdxAYqApt+AjpRpP2CShjMfIa3umZ42UQMvH0tl1qAliYPNYO6vTdcGMqnRrCPmsfzTI1w==" + }, + "Grpc.AspNetCore.Server": { + "type": "Transitive", + "resolved": "2.76.0", + "contentHash": "diSC/ZeNdSdxHdYSOpYwuSBBDYpuNVtJQFJfiBB0WrYOQ4lVMmdxuUZJcViahQyo8pCvS3Mueo5lqFxwwMF/iw==", + "dependencies": { + "Grpc.Net.Common": "2.76.0" + } + }, + "Grpc.AspNetCore.Server.ClientFactory": { + "type": "Transitive", + "resolved": "2.76.0", + "contentHash": "y5KGO1GO0N2L/hCCMR05mmoK8j+v8rKvZ+9nothAxKx2Tf2CwV8f4TM5K0GkKfDsp4vrc4lm90MU6E+DeN7YIw==", + "dependencies": { + "Grpc.AspNetCore.Server": "2.76.0", + "Grpc.Net.ClientFactory": "2.76.0" + } + }, + "Grpc.Core.Api": { + "type": "Transitive", + "resolved": "2.76.0", + "contentHash": "cSxC2tdnFdXXuBgIn1pjc4YBx7LXTCp4M0qn+SMBS35VWZY+cEQYLWTBDDhdBH1HzU7BV+ncVZlniGQHMpRJKQ==" + }, + "Grpc.Net.Common": { + "type": "Transitive", + "resolved": "2.76.0", + "contentHash": "bZpiMVYgvpB44/wBh1RotrkqC7bg2FOasLri2GhR3hMKyzsiTxCoDE49YjPrJeFc4RW0wS8u+EInI09sjxVFRA==", + "dependencies": { + "Grpc.Core.Api": "2.76.0" + } + }, + "Humanizer.Core": { + "type": "Transitive", + "resolved": "2.14.1", + "contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==" + }, + "Json.More.Net": { + "type": "Transitive", + "resolved": "2.1.1", + "contentHash": "ZXAKl2VsdnIZeUo1PFII3Oi1m1L4YQjEyDjygHfHln5vgsjgIo749X6xWkv7qFYp8RROES+vOEfDcvvoVgs8kA==" + }, + "JsonPointer.Net": { + "type": "Transitive", + "resolved": "5.3.1", + "contentHash": "3e2OJjU0OaE26XC/klgxbJuXvteFWTDJIJv0ITYWcJEoskq7jzUwPSC1s0iz4wPPQnfN7vwwFmg2gJfwRAPwgw==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Json.More.Net": "2.1.1" + } + }, + "JsonSchema.Net": { + "type": "Transitive", + "resolved": "7.4.0", + "contentHash": "5T3DWENwuCzLwFWz0qjXXVWA8+5+gC95OLkhqUBWpVpWBMr9gwfhWNeX8rWyr+fLQ7pIQ+lWuHIrmXRudxOOSw==", + "dependencies": { + "JsonPointer.Net": "5.3.1" + } + }, + "Markdig.Signed": { + "type": "Transitive", + "resolved": "0.44.0", + "contentHash": "mNxf8HrQA/clO8usqQhVc0BGlw0bJtZ76dic5KZGBPJZDX4UR67Jglwilkp5A//gPSMwcoY5EjLPppkZ/B4IMg==" + }, + "Microsoft.ApplicationInsights": { + "type": "Transitive", + "resolved": "2.23.0", + "contentHash": "nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw==" + }, + "Microsoft.AspNetCore.Metadata": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "nXVB1K4RzyhDHKYWLiq3+aJopJZKO5ojFqHV9PZ74fe4VWM/8itoouqsd2KIqSooIwQ13UDNlPQfN2rWr7hc2A==" + }, + "Microsoft.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "hQB3Hq1LlF0NkGVNyZIvwIQIY3LM7Cw1oYjNiTvdNqmzzipVAWEK1c5sj2H5aFX0udnjgPLxSYKq2fupueS8ow==" + }, + "Microsoft.CodeAnalysis.Analyzers": { + "type": "Transitive", + "resolved": "3.11.0", + "contentHash": "v/EW3UE8/lbEYHoC2Qq7AR/DnmvpgdtAMndfQNmpuIMx/Mto8L5JnuCfdBYtgvalQOtfNCnxFejxuRrryvUTsg==" + }, + "Microsoft.CodeAnalysis.Common": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZXRAdvH6GiDeHRyd3q/km8Z44RoM6FBWHd+gen/la81mVnAdHTEsEkO5J0TCNXBymAcx5UYKt5TvgKBhaLJEow==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0" + } + }, + "Microsoft.CodeAnalysis.CSharp": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "5DSyJ9bk+ATuDy7fp2Zt0mJStDVKbBoiz1DyfAwSa+k4H4IwykAUcV3URelw5b8/iVbfSaOwkwmPUZH6opZKCw==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.Common": "[5.0.0]" + } + }, + "Microsoft.CodeCoverage": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "O+utSr97NAJowIQT/OVp3Lh9QgW/wALVTP4RG1m2AfFP4IyJmJz0ZBmFJUsRQiAPgq6IRC0t8AAzsiPIsaUDEA==" + }, + "Microsoft.DiaSymReader": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "QcZrCETsBJqy/vQpFtJc+jSXQ0K5sucQ6NUFbTNVHD4vfZZOwjZ/3sBzczkC4DityhD3AVO/+K/+9ioLs1AgRA==" + }, + "Microsoft.EntityFrameworkCore.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "32c58Rnm47Qvhimawf67KO9PytgPz3QoWye7Abapt0Yocw/JnzMiSNj/pRoIKyn8Jxypkv86zxKD4Q/zNTc0Ag==" + }, + "Microsoft.EntityFrameworkCore.Analyzers": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "ipC4u1VojgEfoIZhtbS2Sx5IluJTP/Jf1hz3yGsxGBgSukYY/CquI6rAjxn5H58CZgVn36qcuPPtNMwZ0AUzMg==" + }, + "Microsoft.EntityFrameworkCore.Relational": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "uxmFjZEAB/KbsgWFSS4lLqkEHCfXxB2x0UcbiO4e5fCRpFFeTMSx/me6009nYJLu5IKlDwO1POh++P6RilFTDw==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore.Sqlite.Core": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "rVH43bcUyZiMn0SnCpVnvFpl4PFxT4GwmuVVLcT4JL0NtzuHY9ymKV+Llb5cjuJ+6+gEl4eixy2rE8nxOPcBSA==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "10.0.5", + "Microsoft.EntityFrameworkCore.Relational": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyModel": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "bovnONzrr/JIc+w343i857rJEb7cQH9UzEjbV5n67agWBEYICGQb8xiqYz5+GoFXp6mKEKLwYCQGttMU1p5yXQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.4", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.4", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" + } + }, + "Microsoft.Extensions.Caching.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "k/QDdQ94/0Shi0KfU+e12m73jfQo+3JpErTtgpZfsCIqkvdEEO0XIx6R+iTbN55rNPaNhOqNY4/sB+jZ8XxVPw==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "jUEXmkBUPdOS/MP9areK/sbKhdklq9+tEhvwfxGalZVnmyLUO5rrheNNutUBtvbZ7J8ECkG7/r2KXi/IFC06cA==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Compliance.Abstractions": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "4WkknDbVrHNf+S6fwSt1OAXlGJ/G/QrtJlqx4aNzOLmeT3GRyxpGLZn+Q3UV+RMRAF6FfsijEZBg2ZAW8bTAkg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", + "Microsoft.Extensions.ObjectPool": "10.0.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "8Rx5sqg04FttxrumyG6bmoRuFRgYzK6IVwF1i0/o0cXfKBdDeVpJejKHtJCMjyg9E/DNMVqpqOGe/tCT5gYvVA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "99Z4rjyXopb1MIazDSPcvwYCUdYNO01Cf1GUs2WUjIFAbkGmwzj2vPa2k+3pheJRV+YgNd2QqRKHAri0oBAU4Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "OhTr0O79dP49734lLTqVveivVX9sDXxbI/8vjELAZTHXqoN90mdpgTAgwicJED42iaHMCcZcK6Bj+8wNyBikaw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Physical": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "v1SVsowG6YE1YnHVGmLWz57YTRCQRx9pH5ebIESXfm5isI9gA3QaMyg/oMTzPpXYZwSAVDzYItGJKfmV+pqXkQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "iVMtq9eRvzyhx8949EGT0OCYJfXi737SbRVzWXE5GrOgGj5AaZ9eUuxA/BSUfmOMALKn/g8KfFaNQw0eiB3lyA==" + }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "ksmUG2SFTcXzYdyoLOdeSM/qYLRGN6qbbSzYVkwMK9xsctfR1hYkUayeOpFCMd7L+QSlYX72mK9wxwdgQxyS4g==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.4" + } + }, + "Microsoft.Extensions.DependencyModel": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "xA4kkL+QS6KCAOKz/O0oquHs44Ob8J7zpBCNt3wjkBWDg5aCqfwG8rWWLsg5V86AM0sB849g9JjPjIdksTCIKg==" + }, + "Microsoft.Extensions.Diagnostics": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "vAJHd4yOpmKoK+jBuYV7a3y+Ab9U4ARCc29b6qvMy276RgJFw9LFs0DdsPqOL3ahwzyrX7tM+i4cCxU/RX0qAg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.5" + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "/nYGrpa9/0BZofrVpBbbj+Ns8ZesiPE0V/KxsuHgDgHQopIzN54nRaQGSuvPw16/kI9sW1Zox5yyAPqvf0Jz6A==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "1/hQmONMWxRTKXuN0pQShQN9QsqIRTS1G4fdmKW0O9phuVZjyzIROQD9Fbfwyn2t+yvP8SzjatGAPX4jDRfgHg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4" + } + }, + "Microsoft.Extensions.Features": { + "type": "Transitive", + "resolved": "10.0.4", + "contentHash": "7to+nkZO+g/GiGQOBzAcrr8HcG8dXETI/hg58fJju0jPO9p/GvNLAis8kMPTBdsjfeTfslBrgFX9Yx1KRnKDww==" + }, + "Microsoft.Extensions.FileProviders.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "nCBmCx0Xemlu65ZiWMcXbvfvtznKxf4/YYKF9R28QkqdI9lTikedGqzJ28/xmdGGsxUnsP5/3TQGpiPwVjK0dA==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.FileProviders.Physical": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "dMu5kUPSfol1Rqhmr6nWPSmbFjDe9w6bkoKithG17bWTZA0UyKirTatM5mqYUN3mGpNA0MorlusIoVTh6J7o5g==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.FileSystemGlobbing": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.FileSystemGlobbing": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "mOE3ARusNQR0a5x8YOcnUbfyyXGqoAWQtEc7qFOfNJgruDWQLo39Re+3/Lzj5pLPFuFYj8hN4dgKzaSQDKiOCw==" + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "ybx2QcCWROCnUCbSj/IyHXn1c58brjjHzTTbueKgBl/qHsWk69mu25mjQ3oaMsO1I0+EcS6AhVuhIopL2q3IDw==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.4", + "Microsoft.Extensions.Telemetry": "10.4.0" + } + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "+XTMKQyDWg4ODoNHU/BN3BaI1jhGO7VCS+BnzT/4IauiG6y2iPAte7MyD7rHKS+hNP0TkFkjrae8DFjDUxtcxg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Logging.Configuration": { + "type": "Transitive", + "resolved": "10.0.4", + "contentHash": "XPXoOpUnWEh0pV7Vl2DK2wj47y73Krhrve5OkPrvGIWdZ4U2r47WO8hEdv+wKn65Kh4pmDdiWm7Ibo5pZX+vig==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.4", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", + "Microsoft.Extensions.Configuration.Binder": "10.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", + "Microsoft.Extensions.Logging": "10.0.4", + "Microsoft.Extensions.Logging.Abstractions": "10.0.4", + "Microsoft.Extensions.Options": "10.0.4", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" + } + }, + "Microsoft.Extensions.ObjectPool": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "91t1kPt6F+1cTJ4dZFY89BopLr1JyGlZ2pROIkIuyE28jUXhdelOzn22UwvNk8EwW/9x8D7GXyLqiMJShgIGhQ==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "MDaQMdUplw0AIRhWWmbLA7yQEXaLIHb+9CTroTiNS8OlI0LMXS4LCxtopqauiqGCWlRgJ+xyraVD8t6veRAFbw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "BB9uUW3+6Rxu1R97OB1H/13lUF8P2+H1+eDhpZlK30kDh/6E4EKHBUqTp+ilXQmZLzsRErxON8aBSR6WpUKJdg==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.Binder": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "/HUHJ0tw/LQvD0DZrz50eQy/3z7PfX7WWEaXnjKTV9/TNdcgFlNTZGo49QhS7PTmhDqMyHRMqAXSBxLh0vso4g==" + }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "41CCbJJPsDWU6NsmKfANHkfT/+KCBlZZqQ1eBoQhhW0xqGCiWmUlMdi2BoaM/GcwKHX5WiQL/IESROmgk0Owfw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics": "10.0.4", + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.4.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4", + "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.ServiceDiscovery.Abstractions": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "HkBb7cdi27tkQiQw1anQFbXe+A3pjRwDKgVbd/DD9fMAO2X9abK0FEyM/tNVXjW3lwOWl2tF+Xij/DqI6i+JTg==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", + "Microsoft.Extensions.Configuration.Binder": "10.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", + "Microsoft.Extensions.Features": "10.0.4", + "Microsoft.Extensions.Logging.Abstractions": "10.0.4", + "Microsoft.Extensions.Options": "10.0.4", + "Microsoft.Extensions.Primitives": "10.0.4" + } + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "AbHleTzdpGPjA6RpOjKVHEYx7SoBRnJ2bwAbbPa3aGB7HiVwBmeTJhBGhtIBiuIW0VpKDS8x+bV5iWqpBRIf4w==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.4.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.4.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.4", + "Microsoft.Extensions.ObjectPool": "10.0.4", + "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0" + } + }, + "Microsoft.Extensions.Telemetry.Abstractions": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "3b2uVa4voJfLLg39BPCKQS0ZgnpEZFkKf7YmnMVlM5FQJYBPOuePIQdnEK1/Oxd+w3GscxGYuE7IMOXDwixZtQ==", + "dependencies": { + "Microsoft.Extensions.Compliance.Abstractions": "10.4.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.4", + "Microsoft.Extensions.ObjectPool": "10.0.4", + "Microsoft.Extensions.Options": "10.0.4" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.17.0", + "contentHash": "6NrxQGcZg6IunkN8K2F0UVMavNpfCjbjjjON7PYcL8FwI8aULKUreiHsRX/yaA8j3XsTJnQKUYpoQk5gBjULZw==" + }, + "Microsoft.IdentityModel.Logging": { + "type": "Transitive", + "resolved": "8.17.0", + "contentHash": "w1vjfri0BWqW7RkSZY3ZsqekNfIJJg5BQSFs2j+a+pCXOVrkezmJcn74pT3djwjXJh71577C6wJQgNc2UPz30w==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.17.0" + } + }, + "Microsoft.Management.Infrastructure": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "cGZi0q5IujCTVYKo9h22Pw+UwfZDV82HXO8HTxMG2HqntPlT3Ls8jY6punLp4YzCypJNpfCAu2kae3TIyuAiJw==", + "dependencies": { + "Microsoft.Management.Infrastructure.Runtime.Unix": "3.0.0", + "Microsoft.Management.Infrastructure.Runtime.Win": "3.0.0" + } + }, + "Microsoft.Management.Infrastructure.CimCmdlets": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Th5W4CyHWLVGL8wiIlcTBKK7ggxLB+Tz3K9ixQzcBtdOtBo9O+iRNtiTyVgBwCkGrMxtc/HBLWUaCFAIIn327Q==", + "dependencies": { + "System.Management.Automation": "7.6.0" + } + }, + "Microsoft.Management.Infrastructure.Runtime.Unix": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "QZE3uEDvZ0m7LabQvcmNOYHp7v1QPBVMpB/ild0WEE8zqUVAP5y9rRI5we37ImI1bQmW5pZ+3HNC70POPm0jBQ==" + }, + "Microsoft.Management.Infrastructure.Runtime.Win": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "uwMyWN33+iQ8Wm/n1yoPXgFoiYNd0HzJyoqSVhaQZyJfaQrJR3udgcIHjqa1qbc3lS6kvfuUMN4TrF4U4refCQ==" + }, + "Microsoft.NET.Test.Sdk": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "WNpu6vI2rA0pXY4r7NKxCN16XRWl5uHu6qjuyVLoDo6oYEggIQefrMjkRuibQHm/NslIUNCcKftvoWAN80MSAg==", + "dependencies": { + "Microsoft.CodeCoverage": "18.0.1", + "Microsoft.TestPlatform.TestHost": "18.0.1" + } + }, + "Microsoft.PowerShell.Commands.Diagnostics": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "YaNBSTiD8pDmxMfK8MjbcX/k2QGt0kZQ58T/bkEqZE3oKUITcUsRRYYHtnFkeRSwbdGPC4Lfej9VaL7zbWSeXQ==", + "dependencies": { + "System.Management.Automation": "7.6.0" + } + }, + "Microsoft.PowerShell.Commands.Management": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "GS6Raa/avZbiOZNuEa2drr946bFvNzR6m4dlF3JhqUvz8Hp5gY226lHU4Pna1WTaAnhKNgnsmDJeFELw56UBhw==", + "dependencies": { + "Microsoft.PowerShell.Security": "7.6.0", + "System.Diagnostics.EventLog": "10.0.5", + "System.ServiceProcess.ServiceController": "10.0.5" + } + }, + "Microsoft.PowerShell.Commands.Utility": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "opNQxFiWdFMeCfpgXLlUAP1eg5u+gFQFBwvg+Er7auf1IDNkhU1psSSmtOU2d06/d5GjlqFRNywgzNnhywmDRg==", + "dependencies": { + "JsonSchema.Net": "7.4.0", + "Markdig.Signed": "0.44.0", + "Microsoft.CodeAnalysis.CSharp": "5.0.0", + "Microsoft.PowerShell.MarkdownRender": "7.2.1", + "Microsoft.Win32.SystemEvents": "10.0.5", + "System.Drawing.Common": "10.0.5", + "System.Management.Automation": "7.6.0" + } + }, + "Microsoft.PowerShell.ConsoleHost": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "3tW1hVYcCYMO9JtZRb5qtlPeHerx0un/W6SJeAZRKeJdTQh9e6wqm78VXdd28uY+SOeBgC/eYopQnTSv4xo/SA==", + "dependencies": { + "System.Management.Automation": "7.6.0" + } + }, + "Microsoft.PowerShell.CoreCLR.Eventing": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "bjNtp02ZuXhg6b28p6q+hoAhoSksHZ7cdVhCXX3vUqU0Zlvgl9FJlxFmGfL7ommIpIx/8j5eXO5Pth24LwDSnQ==", + "dependencies": { + "System.Diagnostics.EventLog": "10.0.5" + } + }, + "Microsoft.PowerShell.MarkdownRender": { + "type": "Transitive", + "resolved": "7.2.1", + "contentHash": "o5oUwL23R/KnjQPD2Oi49WAG5j4O4VLo1fPRSyM/aq0HuTrY2RnF4B3MCGk13BfcmK51p9kPlHZ1+8a/ZjO4Jg==", + "dependencies": { + "Markdig.Signed": "0.31.0" + } + }, + "Microsoft.PowerShell.Native": { + "type": "Transitive", + "resolved": "700.0.0-rc.1", + "contentHash": "lJOCErHTSWwCzfp3wgeyqhNRi4t43McDc0CHqlbt3Cj3OomiqPlNHQXujSbgd+0Ir6/8QAmvU/VOYgqCyMki6A==" + }, + "Microsoft.PowerShell.Security": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "sTSYo9zxWs+kl2TE9nTx5He7m4b4lcvF5yBpXEio9DN3KGw+lvh2vjFhOfpmVTPXubg/9hiLSnSs/zvgNdShGQ==", + "dependencies": { + "System.Management.Automation": "7.6.0" + } + }, + "Microsoft.Security.Extensions": { + "type": "Transitive", + "resolved": "1.4.0", + "contentHash": "MnHXttc0jHbRrGdTJ+yJBbGDoa4OXhtnKXHQw70foMyAooFtPScZX/dN+Nib47nuglc9Gt29Gfb5Zl+1lAuTeA==" + }, + "Microsoft.Testing.Extensions.CodeCoverage": { + "type": "Transitive", + "resolved": "18.4.1", + "contentHash": "l1VZM9dg9s76L5D288ipAT4HRYDJ6Vxh8wX20gfS9VnpueedRfN4/aGNn4oA1g6pwq2WSM3Ci7IoSSGPiqu+WQ==", + "dependencies": { + "Microsoft.DiaSymReader": "2.0.0", + "Microsoft.Extensions.DependencyModel": "8.0.2", + "Microsoft.Testing.Platform": "2.0.2" + } + }, + "Microsoft.Testing.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "5TwgTx2u7k9Al/xbZ18QXq4Hdy2xewkVTI6K3sk+jY2ykqUkIKNuj7rFu3GOV5KnEUkevhw6eZcyZs77STHJIA==", + "dependencies": { + "Microsoft.ApplicationInsights": "2.23.0", + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Extensions.TrxReport": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "cXmP225WcMLLOSrW8xekaNhfzdBwXX3cbXbE5qSzmLbK0KZe3z8rAObKj70FWiPPPzm2W22x0ZW93gsmAfK6Mg==", + "dependencies": { + "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Extensions.TrxReport.Abstractions": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "D8xmIJYQFJ6D49Rx5/vPrkZZxb338Jkew+eSqZLBfBiWKw4QZKy3i1BOXiLfz0lOmaNErwDz/YWRojCdNl+B9Q==", + "dependencies": { + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Extensions.VSTestBridge": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "bNRIEA2YoGr+Y+7LHdA7i1U80+7BAdf4K4Qh4Kx6eKkoBK/NV7QpoMg+GWPP0/eqAFzuUmUOIPVZ87Oo0Vyxmw==", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "18.0.1", + "Microsoft.Testing.Extensions.Telemetry": "2.1.0", + "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Platform": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "aHkjNTGIA+Zbdw6RJgSFrbDrCjO0CgqpElqYcvkRSeUhBv2bKarnvU3ep786U7UqrPlArT/B7VmImRibJD0Zrg==" + }, + "Microsoft.Testing.Platform.MSBuild": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "UpfPebXQtHGrWz21+YLHmJSm+5zsuPE9U9pfdCtoB+67g75fDmWlNgpkH2ZmdVhSwkjNIed9Icg8Iu63z2ei5Q==", + "dependencies": { + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.TestPlatform.ObjectModel": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "qT/mwMcLF9BieRkzOBPL2qCopl8hQu6A1P7JWAoj/FMu5i9vds/7cjbJ/LLtaiwWevWLAeD5v5wjQJ/l6jvhWQ==" + }, + "Microsoft.TestPlatform.TestHost": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "uDJKAEjFTaa2wHdWlfo6ektyoh+WD4/Eesrwb4FpBFKsLGehhACVnwwTI4qD3FrIlIEPlxdXg3SyrYRIcO+RRQ==", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "18.0.1", + "Newtonsoft.Json": "13.0.3" + } + }, + "Microsoft.Win32.Registry.AccessControl": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "1J6ooeZGeTSlM2vZdB1UHm9Y7vP8f/pS+Pd2JrqfjXLBZXrrby4rXBY6pP2k/Wb26CVm9TlEPjyWB2ryXT69LA==" + }, + "Microsoft.Win32.SystemEvents": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "a7rC0Qb5JGiA4f4ooqQjsx17LgYkb9feOcMNGyBXGqYmqC4ZoLbrV98zn7Kr5Z39BIU10Bti80Jwm/QAw+45VA==" + }, + "Microsoft.Windows.Compatibility": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "UPIGVEcJUFVw0zj1IA71HxumiE4ZLdPH46e6bau1Pnrx18UxbRxa98qb1RVK1hRrmzgQcvslyT03KtiLSaFExw==", + "dependencies": { + "Microsoft.Win32.Registry.AccessControl": "10.0.5", + "Microsoft.Win32.SystemEvents": "10.0.5", + "System.CodeDom": "10.0.5", + "System.ComponentModel.Composition": "10.0.5", + "System.ComponentModel.Composition.Registration": "10.0.5", + "System.Configuration.ConfigurationManager": "10.0.5", + "System.Data.Odbc": "10.0.5", + "System.Data.OleDb": "10.0.5", + "System.Data.SqlClient": "4.9.0", + "System.Diagnostics.EventLog": "10.0.5", + "System.Diagnostics.PerformanceCounter": "10.0.5", + "System.DirectoryServices": "10.0.5", + "System.DirectoryServices.AccountManagement": "10.0.5", + "System.DirectoryServices.Protocols": "10.0.5", + "System.Drawing.Common": "10.0.5", + "System.IO.Packaging": "10.0.5", + "System.IO.Ports": "10.0.5", + "System.Management": "10.0.5", + "System.Reflection.Context": "10.0.5", + "System.Runtime.Caching": "10.0.5", + "System.Security.Cryptography.Pkcs": "10.0.5", + "System.Security.Cryptography.ProtectedData": "10.0.5", + "System.Security.Cryptography.Xml": "10.0.5", + "System.Security.Permissions": "10.0.5", + "System.ServiceModel.Http": "8.1.2", + "System.ServiceModel.NetTcp": "8.1.2", + "System.ServiceModel.Primitives": "8.1.2", + "System.ServiceModel.Syndication": "10.0.5", + "System.ServiceProcess.ServiceController": "10.0.5", + "System.Speech": "10.0.5", + "System.Web.Services.Description": "8.1.2" + } + }, + "Microsoft.WSMan.Management": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "XohGKsxBbEFaBASEWveSBy+GTNOElQD8UBldmRjuhwnjix2FURj259W0qV2bj4OkzanWPPbNt6aiFSuupTATGg==", + "dependencies": { + "Microsoft.WSMan.Runtime": "7.6.0", + "System.Diagnostics.EventLog": "10.0.5", + "System.Management.Automation": "7.6.0", + "System.ServiceProcess.ServiceController": "10.0.5" + } + }, + "Microsoft.WSMan.Runtime": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "5tMrp/aoM6uIdUNe16CWEMzxQ2E1uqrl1wXaIc1KPlXDWk60v438s7ujCXVGb/gDUaOacOcYkOi94G/Vl/Fm2g==" + }, + "MimeKit": { + "type": "Transitive", + "resolved": "4.15.1", + "contentHash": "cxCcQhD0zhboFoG136jJuJtQjNRDJ+BxBm3f2vWn+53bff/CRo+K1mAkWjsW4Wuyy5O22F40MdMG2nRzQu1cJw==", + "dependencies": { + "BouncyCastle.Cryptography": "2.6.2", + "System.Security.Cryptography.Pkcs": "10.0.0" + } + }, + "MSTest.Analyzers": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "4ElL/aqomiUInr090VN4udqz46AuszXLrifHkLrgj0zb7na8eAoyUQt3BwDLTcGd1bSkmk3SfD02rZtKU+ZiqQ==" + }, + "MSTest.TestAdapter": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "bRW1Hftwq0XbcVExcAbj4YAfSZDRAziL0mygDkPBvaUe2nSsWFQIatze5lHVjPFJMvSFgWnItku4pguIy5FowQ==", + "dependencies": { + "MSTest.TestFramework": "4.1.0", + "Microsoft.Testing.Extensions.VSTestBridge": "2.1.0", + "Microsoft.Testing.Platform.MSBuild": "2.1.0" + } + }, + "MSTest.TestFramework": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "BzpvsK+CRbk6khwY62h+7HfYzIxtJXyPv9tOI9T90cy5CVy+WI1JkN4ZaNL4Dobqb6dywSwabLTIbPZKpdrr+A==", + "dependencies": { + "MSTest.Analyzers": "4.1.0" + } + }, + "Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.4", + "contentHash": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==" + }, + "Npgsql": { + "type": "Transitive", + "resolved": "10.0.2", + "contentHash": "q5RfBI+wywJSFUNDE1L4ZbHEHCFTblo8Uf6A6oe4feOUFYiUQXyAf9GBh5qEZpvJaHiEbpBPkQumjEhXCJxdrg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.0" + } + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.15.1", + "contentHash": "oJCqFTS/9S70TGPoamdGJRvw5hLOn6I/XC4X0npDErl2sHDlAg030ArJkIHIuLFCTO5GWqj1uDhsZNjO36xMxg==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.1" + } + }, + "OpenTelemetry.Api": { + "type": "Transitive", + "resolved": "1.15.1", + "contentHash": "+LJP0YBrysh4kPCRZhEyTUTcd+FFP0NPDvV4AzULBmiInGt6fp+RgBieRhUzVX/yyVEyshg3s82RWFYZJIkeGQ==" + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.15.1", + "contentHash": "aZedpOfXtHmVSWlebxJBeJg2DCdzds86mMowBTS6l+sjwV9LvQuZa0JDU9+S7FQvta4hnauxlCEYplbiDiYGeg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.15.1" + } + }, + "Polly.Core": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" + }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Polly.Core": "8.4.2" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2", + "System.Threading.RateLimiting": "8.0.0" + } + }, + "runtime.android-arm.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "nZdjF2WSBDvYCkaeDC4tIXada+cuYdgLWKFgIEbgcuIfuC7dLyKKpsXKcBYm2utrymmBKgXpRElK37Ts/BKwHQ==" + }, + "runtime.android-arm64.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "fJilZhYkETJX2CDhZ/GsA6xgfDGdCugUIn2Gk/11mVA4HSn+5agco2z1xCjds9oMmnTYjQIZALwi311mDF2utA==" + }, + "runtime.android-x64.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "BXmMlyT9Mnkl4mxMw4jwFnOyGpT3ts+Q0qvbK3BiTDAJPkCuyRqFBPb4/QVSkG8DKjCq4rD3tbZx57gl/iKh3g==" + }, + "runtime.android-x86.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "5oj/cFputmPxRDXz9lTDEWCK1UAZbHkVPNhx6gPOBdB6esQ/dzW5YWWWrE8qd24OgKMIXfUGCUiv8X2MFvE7mw==" + }, + "runtime.linux-arm.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "EZiqHjxgvDakx9UYNfRjXtevIlggWdqBEExeZG7g7Zt1XksV8Oud2bwrWOK1PhnlROmXV3YDNE5wK9rHrMQqpg==" + }, + "runtime.linux-arm64.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "3ZEQMsHJ+HCJs+4z/4QdQpE6PhV4cOW5kob8kXYT8jf2MJ4oOELiAKy/GNuxB9mnpL3/IELIrZa7j/yPPQXqPw==" + }, + "runtime.linux-bionic-arm64.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "vrg5vcj+tSxrOlt9QpsoNg7RQVgj0di9ZywEAsoa+2Cg48ZuLuf5IaHSgCxYcU195GibrUaD3aqhPMuj8wBiIA==" + }, + "runtime.linux-bionic-x64.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "Sf3oMGv8fkyFgrS8v1R9r6hnyjjxLxWB5KRzoeER8joyxCsBhwCh7PtAjcZJwIY4yOxEaVoLkHQqgB55rUJdag==" + }, + "runtime.linux-musl-arm.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "TQMo+2NA4eB/7CLRVbEwDRu8NC+IKy6TTJKCUVufvgaVJTu3/6ZlONSUX1wtKszxxqMWs7M8ZVQ3J3sWn1IAAw==" + }, + "runtime.linux-musl-arm64.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "9KGCN0wsG9xSPzL3JSDdQfhZfsR2fV0pL1iLnvFzIvjTmqtMqe945QLK6lk7J6g7raqu5dDmWFs6atUlwuvI9A==" + }, + "runtime.linux-musl-x64.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "Wo1np+ez58KbmAx/DrLb93DPaxs4mlWKB20UFm+klTjBZkLR/E5fSijYYkJiQa8+QQ7DrgwpKocO5jveQ6TmyQ==" + }, + "runtime.linux-x64.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "LEui8jeftffYJWcqNB9NY1h2wjpvYNHpx56k6PfojNTEJVkDJX/O7t0LnfbIKqqnKNHEzfzzuc+kKqShlOC5YA==" + }, + "runtime.maccatalyst-arm64.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "sEpLosIuiDygUrLBY/Cb5QGksm+GVMFAbkHgsA4EI+xIwN64nm5t0RC7nYa5ir4Ow1rG7UPppLvld95Z1uMHbg==" + }, + "runtime.maccatalyst-x64.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "xR/JIRaO8iyCzOdJZuqb1/WZ14M71hfoqaS36a4p/X1EbDdVLM97UFPAAcwSVAmvQCKSn1Tf+gT43xtYdQeNUw==" + }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "A8v6PGmk+UGbfWo5Ixup0lPM4swuSwOiayJExZwKIOjTlFFQIsu3QnDXECosBEyrWSPryxBVrdqtJyhK3BaupQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "N3CaTe3uSLjoi7uNnx83HEwPGgrAQz2JJ1KUorEMmMYBwwDavw+aalHNiYSEyfPGqvVRsetkZ42oAQx6dZj+WA==", + "dependencies": { + "runtime.android-arm.runtime.native.System.IO.Ports": "10.0.5", + "runtime.android-arm64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.android-x64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.android-x86.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-arm.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-arm64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-bionic-arm64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-bionic-x64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-musl-arm.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-musl-arm64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-musl-x64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.linux-x64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.maccatalyst-arm64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.maccatalyst-x64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.osx-arm64.runtime.native.System.IO.Ports": "10.0.5", + "runtime.osx-x64.runtime.native.System.IO.Ports": "10.0.5" + } + }, + "runtime.osx-arm64.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "Fj8EEw6yihufT95SJ+SQBjoxXiNLNIHB0pf9pO89Myd1IbdKASwi6llgQr7jcd/PdnuRoghxWgKKnYgRysWm/w==" + }, + "runtime.osx-x64.runtime.native.System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "y/RbVJGN17kifSSGUOUsfip6PkoE67s4aA7PO/Z0piYz2Da3OC8/mrDaiiHemt/+F/p5SiVEXfA30s0ccW4xGw==" + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Serilog": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "+cDryFR0GRhsGOnZSKwaDzRRl4MupvJ42FhCE4zhQRVanX0Jpg6WuCBk59OVhVDPmab1bB+nRykAnykYELA9qQ==" + }, + "Serilog.Extensions.Hosting": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, + "Serilog.Formatting.Compact": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Serilog.Settings.Configuration": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "LNq+ibS1sbhTqPV1FIE69/9AJJbfaOhnaqkzcjFy95o+4U+STsta9mi97f1smgXsWYKICDeGUf8xUGzd/52/uA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "10.0.0", + "Microsoft.Extensions.DependencyModel": "10.0.0", + "Serilog": "4.3.0" + } + }, + "Serilog.Sinks.Debug": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "SQLitePCLRaw.bundle_e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "DC4nA7yWnf4UZdgJDF+9Mus4/cb0Y3Sfgi3gDnAoKNAIBwzkskNAbNbyu+u4atT0ruVlZNJfwZmwiEwE5oz9LQ==", + "dependencies": { + "SQLitePCLRaw.lib.e_sqlite3": "2.1.11", + "SQLitePCLRaw.provider.e_sqlite3": "2.1.11" + } + }, + "SQLitePCLRaw.core": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "PK0GLFkfhZzLQeR3PJf71FmhtHox+U3vcY6ZtswoMjrefkB9k6ErNJEnwXqc5KgXDSjige2XXrezqS39gkpQKA==" + }, + "SQLitePCLRaw.lib.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "Ev2ytaXiOlWZ4b3R67GZBsemTINslLD1DCJr2xiacpn4tbapu0Q4dHEzSvZSMnVWeE5nlObU3VZN2p81q3XOYQ==" + }, + "SQLitePCLRaw.provider.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "Y/0ZkR+r0Cg3DQFuCl1RBnv/tmxpIZRU3HUvelPw6MVaKHwYYR8YNvgs0vuNuXCMvlyJ+Fh88U1D4tah1tt6qw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.11" + } + }, + "System.CodeDom": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "hGZWDDJh1U6t7fy3iO4HlZYK1ur1fWE3sTqTNHkHk0Leh0JUcxYM//JtLBNG5g+6D2Lt0+aHH8rc7e5oIlNgCg==" + }, + "System.ComponentModel.Composition": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "Yi8nY2EKRZlZYRPxQ1/E4rrYs6QD1H0UgfcfHhKsCVhNJ4lNULLbly6Dtz6CjH6gZKBf2hZYXzzzzVGhpGLBvw==" + }, + "System.ComponentModel.Composition.Registration": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "yaeiTK8VYzgD67+bmB/vu+CxwnPCfFLD0+e0jeOLDgcdNoUTx6j3uMv/QI3r4PecPZQw1xriXdfqfhqvvyx7qg==", + "dependencies": { + "System.ComponentModel.Composition": "10.0.5", + "System.Reflection.Context": "10.0.5" + } + }, + "System.Configuration.ConfigurationManager": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "9UHU7hldEOVgcOHUX7Pa+owDfpzhW+a1gshEvyknAoDA++G6FV+N1cPoUbtsXEO7GgPErGSg8MHrI/YqrLoiGA==", + "dependencies": { + "System.Diagnostics.EventLog": "10.0.5", + "System.Security.Cryptography.ProtectedData": "10.0.5" + } + }, + "System.Data.Odbc": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "nLtGLGJYf0jfVNH7004s5N3a6setHGhh/pRJTqq1U5bBx3TOaV9gDtZomi1IcacAoX9UwmVflXdViuw5UzEXAw==" + }, + "System.Data.OleDb": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "ZQpXcFu9i0MO2UnoD0KjaFCrB3bZ2Yzk8YdML2/PRU7U2QIWYzCpkkMJXUamG7gwowTuXmLm3eXDKiU8fM0cQg==", + "dependencies": { + "System.Configuration.ConfigurationManager": "10.0.5", + "System.Diagnostics.PerformanceCounter": "10.0.5" + } + }, + "System.Data.SqlClient": { + "type": "Transitive", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "System.Diagnostics.EventLog": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "wugvy+pBVzjQEnRs9wMTWwoaeNFX3hsaHeVHFDIvJSWXp7wfmNWu3mxAwBIE6pyW+g6+rHa1Of5fTzb0QVqUTA==" + }, + "System.Diagnostics.PerformanceCounter": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "2fdEqAn8xpPNW7g7BDwsvWw9BGG4m8yu2+qqRFE02nypN4urVdzp3kT42e6pION9RHGkEUFHnrBLXcUQ2+Ws2w==", + "dependencies": { + "System.Configuration.ConfigurationManager": "10.0.5" + } + }, + "System.DirectoryServices": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "1AbKZ7Jh/kN7U7BPf5fLWMXjaXeSCCSL8OLvs1aM2P4FJL1+BATcnIjhUgG3pcmII0aFN+tWS/rX0iBZkX9AVw==" + }, + "System.DirectoryServices.AccountManagement": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "gWbJuEXT8wmdjz3tWuqCs7fj5ak1TKJxJfG+PBt7WFqBkVsMbjQ1VJcR2ZoPgTeRHcHqHdjA04MLBJ6Eq8QgEw==", + "dependencies": { + "System.Configuration.ConfigurationManager": "10.0.5", + "System.DirectoryServices": "10.0.5", + "System.DirectoryServices.Protocols": "10.0.5" + } + }, + "System.DirectoryServices.Protocols": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "9cxxK3ulK9KHqifCyvxvATTYNda1WxZxvrC41loC/9j1/+qF6q/E2RCgqSNrKWB7WtFNDOWuJQSOoPF88OTskQ==" + }, + "System.Drawing.Common": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "FYgPPbii/9Prh7RuY1gaxSyik7Ysw594K0uCHggDxHDgl7mfk8c4UlwluKjQoMquVGLce7Jld4DjjsnuYK3m7g==", + "dependencies": { + "Microsoft.Win32.SystemEvents": "10.0.5" + } + }, + "System.IO.Packaging": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "ygK00KGbFHlZZmcO5ihqdrsMeFQ0liD2qQ+Yz/30G5ZOyeh3aHBEfVIRPBNFBE0epnwjbIrjLdDvLP3iBmsCcg==" + }, + "System.IO.Ports": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "tUlRZNFQ5c5SHZourJdX4DecbJYXHgWOsYxsvsPT3UxCL0Na0YA1awzGZu91Q2Lo6obt57b1o0IqP7ABLGvWPA==", + "dependencies": { + "runtime.native.System.IO.Ports": "10.0.5" + } + }, + "System.Management": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "JhBVxvWhUJ0KAquUK0dMnc3a1Ol4JyH8fMrMQZ9GgEUkrtvPy8DE57SDnGnuvOdI0maJOdguxw87N5bh2eL87A==", + "dependencies": { + "System.CodeDom": "10.0.5" + } + }, + "System.Management.Automation": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "S/AVZCBLZAsfZ+Oe29GuH45bi8Gi5inskQ4IE8Q5bvgtuF4AIwuXPkpnZK5nzF+9XDz+hF31yS8w1C15HvZhlg==", + "dependencies": { + "Microsoft.ApplicationInsights": "2.23.0", + "Microsoft.Management.Infrastructure": "3.0.0", + "Microsoft.PowerShell.CoreCLR.Eventing": "7.6.0", + "Microsoft.PowerShell.Native": "700.0.0-rc.1", + "Microsoft.Security.Extensions": "1.4.0", + "Microsoft.Win32.Registry.AccessControl": "10.0.5", + "Newtonsoft.Json": "13.0.4", + "System.CodeDom": "10.0.5", + "System.Configuration.ConfigurationManager": "10.0.5", + "System.Diagnostics.EventLog": "10.0.5", + "System.DirectoryServices": "10.0.5", + "System.Management": "10.0.5", + "System.Security.Cryptography.Pkcs": "10.0.5", + "System.Security.Cryptography.ProtectedData": "10.0.5", + "System.Security.Permissions": "10.0.5", + "System.Windows.Extensions": "10.0.5" + } + }, + "System.Net.Http.WinHttpHandler": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "Ov7L6Ab7BSMq7o6quFalQZW5lFQPvVrZwUOXFqUD+WufOezhWY5cRts8z0eCla8FQr549eJzsYssfLJOXZMVIA==" + }, + "System.Reflection.Context": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "DAAArz6bs7EMcndUH5eKd7A/963OKFA7RWB5kyQpp7/ze7Is3mlVAcCVCRDpxIVmlFJ83sVFO4LxTPm7joxo4w==" + }, + "System.Runtime.Caching": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "bEwpkbmj1Ep8ioRI7M8eoPpgp6rHXHu1D+e2lCXqDYBChPOKA09TwEbIkzZk+Dwueh4kVZOXOWpzMY/LsgND/g==", + "dependencies": { + "System.Configuration.ConfigurationManager": "10.0.5" + } + }, + "System.Security.Cryptography.Pkcs": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "BJEYUZfXpkPIHo2+oFoUemD5CPMFHPJOkRzXrbj/iZrWsjga3ypj8Rqd9bFlSLupEH4IIdD/aBWm/V1gCiBL9w==" + }, + "System.Security.Cryptography.Xml": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "1FW536WbzEWa/+UmSroCtfuTEPh3ueOnFtD0jEZP6xreGMf8/cSHDUFNpVUq4pXvvvVl4WMgBgavjxu5zTj+uw==", + "dependencies": { + "System.Security.Cryptography.Pkcs": "10.0.5" + } + }, + "System.Security.Permissions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "mhNFWI/5ljeEUT4nsJFK5ykecpyelRwN6Hy1x0hIJoqs5ssHJ9jr7hIkrjhbiE2Y4usuG1FpZr9S00Oei49aMg==", + "dependencies": { + "System.Windows.Extensions": "10.0.5" + } + }, + "System.ServiceModel.Http": { + "type": "Transitive", + "resolved": "10.0.652802", + "contentHash": "G02XZvmccf42QCU5MjviBIg69MSMAVHwL1inVPsNSpfp5g+t5BkQM3DyvWRLN4qmeFDWSF/mA1rIYONIDu/6Dg==", + "dependencies": { + "System.ServiceModel.Primitives": "10.0.652802" + } + }, + "System.ServiceModel.NetFramingBase": { + "type": "Transitive", + "resolved": "10.0.652802", + "contentHash": "8/wx/Xnfm9LmGmK0banr05JJYNZmJzlxa8J5lfR7v3MM78QzSG8C3/HDi0/BjlOMeMZd21sX7oEFUhoucrk49w==", + "dependencies": { + "System.ServiceModel.Primitives": "10.0.652802" + } + }, + "System.ServiceModel.NetTcp": { + "type": "Transitive", + "resolved": "10.0.652802", + "contentHash": "VFQgu0IRWUPuPTxHZkMmhPNGYqcu9RwpFcZpW5L941dunUY8nJAErtAWEZYKnj2zAWsm/88nLAEoFc4cuoC2zw==", + "dependencies": { + "System.ServiceModel.NetFramingBase": "10.0.652802", + "System.ServiceModel.Primitives": "10.0.652802" + } + }, + "System.ServiceModel.Primitives": { + "type": "Transitive", + "resolved": "10.0.652802", + "contentHash": "ULfGNl75BNXkpF42wNV2CDXJ64dUZZEa8xO2mBsc4tqbW9QjruxjEB6bAr4Z/T1rNU+leOztIjCJQYsBGFWYlw==", + "dependencies": { + "Microsoft.Extensions.ObjectPool": "10.0.0", + "System.Security.Cryptography.Xml": "10.0.0" + } + }, + "System.ServiceModel.Syndication": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "lMzvEBS8dnq+TH4Ff50abQRMlbVTTBMenAmv/ILyaY3Mpf4+k/IlQtIl3uAyoNX/nXfKZp+1NyBWpxDSsMs6iA==" + }, + "System.ServiceProcess.ServiceController": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "L7pataU51CVJkdfIxpH6wY1buML9zsi9ZVWYaCOLM1AMpd4wQ0StzbOb8OGZAfwCyK/oyKEYcCZrWAi4GgP3lg==", + "dependencies": { + "System.Diagnostics.EventLog": "10.0.5" + } + }, + "System.Speech": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "MYkGiMGWYc9rhyvsmf2UGIHD4RVJ3+uNgllFPP1YW6ILJJDXpDN8jMcy++0E/KrG507kTPCo5EOW4tEwUOCKhQ==" + }, + "System.Threading.RateLimiting": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" + }, + "System.Web.Services.Description": { + "type": "Transitive", + "resolved": "8.1.2", + "contentHash": "FziIBleSpygZOBudSeMkawLgfarnSam7paGkTtV9ITyTmw/TdEqB+moS0TeApmNfAMWGbcWXDXr3djckuLgGDg==" + }, + "System.Windows.Extensions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "5hVP2TIgEqqA590MnKmMN5+Fgzl6xBRjR1wbgC3M1znrZZJe63TwBPN+ymaMgwT0vjsiXk95AjMAe8SAhhJSTg==" + }, + "TimeZoneConverter": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "sFbY65N/5GdsHx7nkdHFHUG+5Ar4W0w6Aks7Y2X+Q4NOTw6XyX2Il7jm+4tPkc//4mA3nG0RdxI8gKgoJitdLw==" + }, + "werkr.agent": { + "type": "Project", + "dependencies": { + "Grpc.AspNetCore": "[2.76.0, )", + "MailKit": "[4.15.1, )", + "Microsoft.PowerShell.SDK": "[7.6.0, )", + "Serilog.AspNetCore": "[10.0.0, )", + "Serilog.Sinks.Console": "[6.1.1, )", + "Serilog.Sinks.File": "[7.0.0, )", + "Serilog.Sinks.OpenTelemetry": "[4.2.0, )", + "Werkr.Common": "[1.0.0, )", + "Werkr.Core": "[1.0.0, )", + "Werkr.Data": "[1.0.0, )", + "Werkr.ServiceDefaults": "[1.0.0, )" + } + }, + "werkr.common": { + "type": "Project", + "dependencies": { + "Google.Protobuf": "[3.34.1, )", + "Microsoft.AspNetCore.Authorization": "[10.0.5, )", + "Microsoft.Extensions.Configuration.Json": "[10.0.5, )", + "Microsoft.IdentityModel.Tokens": "[8.17.0, )", + "TimeZoneNames": "[7.0.0, )", + "Werkr.Common.Configuration": "[1.0.0, )" + } + }, + "werkr.common.configuration": { + "type": "Project" + }, + "werkr.core": { + "type": "Project", + "dependencies": { + "Grpc.Net.Client": "[2.76.0, )", + "MailKit": "[4.15.1, )", + "Microsoft.Extensions.Hosting.Abstractions": "[10.0.5, )", + "System.Security.Cryptography.ProtectedData": "[10.0.5, )", + "Werkr.Common": "[1.0.0, )", + "Werkr.Data": "[1.0.0, )" + } + }, + "werkr.data": { + "type": "Project", + "dependencies": { + "EFCore.NamingConventions": "[10.0.1, )", + "Microsoft.EntityFrameworkCore": "[10.0.5, )", + "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.5, )", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.1, )", + "Werkr.Common": "[1.0.0, )" + } + }, + "werkr.servicedefaults": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Http.Resilience": "[10.4.0, )", + "Microsoft.Extensions.ServiceDiscovery": "[10.4.0, )", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.15.1, )", + "OpenTelemetry.Extensions.Hosting": "[1.15.1, )", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.15.1, )", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.15.0-beta.1, )", + "OpenTelemetry.Instrumentation.GrpcNetClient": "[1.15.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.15.0, )", + "OpenTelemetry.Instrumentation.Runtime": "[1.15.0, )" + } + }, + "EFCore.NamingConventions": { + "type": "CentralTransitive", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "Xs5k8XfNKPkkQSkGmZkmDI1je0prLTdxse+s8PgTFZxyBrlrTLzTBUTVJtQKSsbvu4y+luAv8DdtO5SALJE++A==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[10.0.1, 11.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.1, 11.0.0)", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1" + } + }, + "Google.Protobuf": { + "type": "CentralTransitive", + "requested": "[3.34.1, )", + "resolved": "3.34.1", + "contentHash": "212vdYxRuVopGE5bess6Jg5oXWyizA6hcLPTI7G+qA4PthQEvfeof3njT+7VSY5v/+O0P22xTydiP5fSJJpGEA==" + }, + "Grpc.AspNetCore": { + "type": "CentralTransitive", + "requested": "[2.76.0, )", + "resolved": "2.76.0", + "contentHash": "LyXMmpN2Ba0TE35SOLSKbGqIYtJuhc1UgiaGfoW1X8KJERV70QI5KGW+ckEY7MrXoFWN/uWo4B70siVhbDmCgQ==", + "dependencies": { + "Google.Protobuf": "3.31.1", + "Grpc.AspNetCore.Server.ClientFactory": "2.76.0", + "Grpc.Tools": "2.76.0" + } + }, + "Grpc.Net.Client": { + "type": "CentralTransitive", + "requested": "[2.76.0, )", + "resolved": "2.76.0", + "contentHash": "K1oldmqw2+Gn69nGRzZLhqSiUZwelX1GrBu/cUl9wNf1C0uB61vFS6JcxUUv9P8VoUJhFsmV44JA6lI2EUt4xw==", + "dependencies": { + "Grpc.Net.Common": "2.76.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0" + } + }, + "Grpc.Net.ClientFactory": { + "type": "CentralTransitive", + "requested": "[2.76.0, )", + "resolved": "2.76.0", + "contentHash": "XI+kO69L9AV8B9N0UQOmH911r6MOEp9huHiavEsY56DJYuzJ9KAxNGy37dpV6CLbgCaN2uKmpOsZ9Pao6bmpVQ==", + "dependencies": { + "Grpc.Net.Client": "2.76.0", + "Microsoft.Extensions.Http": "8.0.0" + } + }, + "Grpc.Tools": { + "type": "CentralTransitive", + "requested": "[2.78.0, )", + "resolved": "2.78.0", + "contentHash": "6jPG2gHon+w2PczW8jjrCRnW/g9eEfCdd7aK6mDooptWtuPsV3ZxAwKKEx7LGEDVoT4c2SViRl8Yu3L1XiWIIg==" + }, + "MailKit": { + "type": "CentralTransitive", + "requested": "[4.15.1, )", + "resolved": "4.15.1", + "contentHash": "4mLbqTbH3ctd0NlukHjVQbU3ZnNDuCtB6ttNZDLPZLWMA2Dr31rh/eCSTqOwDojUX8zfDOVaxstMgJTE9PwZNA==", + "dependencies": { + "MimeKit": "4.15.1" + } + }, + "Microsoft.AspNetCore.Authorization": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "NbFi4wN6fUvZK4AKmixpfx0IvqtVimKEn8ZX28LkzZBVo09YnLbyRrJ1001IVQDLbV+aYpS/cLhVJu5JD0rY5A==", + "dependencies": { + "Microsoft.AspNetCore.Metadata": "10.0.5", + "Microsoft.Extensions.Diagnostics": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "jFYXnh7s0RShCw6Vkf+ReGCw+mVi7ISg1YaEzYCJcXnUifmbW+aqvCsRJuSRj2ZuQ+oqetpjxlZtbpMmk5FKqQ==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "9tNBmK3EpYVGRQLiqP+bqK2m+TD0Gv//4vCzR7ZOgl4FWzCFyOpYdIVka13M4kcBdPdSJcs3wbHr3rmzOqbIMA==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "10.0.5", + "Microsoft.EntityFrameworkCore.Analyzers": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore.Sqlite": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "lxeRviglTkkmzYJVJ600yb6gJjnf5za9v7uH+0byuSXTGv7U8cT6hz7qRTmiGSOfLcl86QFdy2BBKaUFd6NQug==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Sqlite.Core": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyModel": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.11", + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "P09QpTHjqHmCLQOTC+WyLkoRNxek4NIvfWt+TnU0etoDUSRxcltyd6+j/ouRbMdLR0j44GqGO+lhI2M4fAHG4g==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.Json": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "brBM/WP0YAUYh2+QqSYVdK8eQHYQTtTEUJXJ+84Zkdo2buGLja9VSrMIhgoeBUU7JBmcskAib8Lb/N83bvxgYQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.FileExtensions": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Hosting.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "+Wb7KAMVZTomwJkQrjuPTe5KBzGod7N8XeG+ScxRlkPOB4sZLG4ccVwjV4Phk5BCJt7uIMnGHVoN6ZMVploX+g==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Http": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "AiFvHYM8nP0wPC7bGPI3NHQlSYSLqjjT7DMJUuuxhd+7pz3O89iu2gdQfgACy5DxsXENiok5i1bMacJL7KR8jA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Diagnostics": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "CentralTransitive", + "requested": "[10.4.0, )", + "resolved": "10.4.0", + "contentHash": "HbkUsPUC7vLy2TaDbdA9aooW64n9yX4sUppRuiJ1cOzzU1FUW+MVEotm6kYVq6AuUI9xwFSBhRFzA03blmk3VA==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.4.0", + "Microsoft.Extensions.ObjectPool": "10.0.4", + "Microsoft.Extensions.Resilience": "10.4.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "9HOdqlDtPptVcmKAjsQ/Nr5Rxfq6FMYLdhvZh1lVmeKR738qeYecQD7+ldooXf+u2KzzR1kafSphWngIM3C6ug==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.ServiceDiscovery": { + "type": "CentralTransitive", + "requested": "[10.4.0, )", + "resolved": "10.4.0", + "contentHash": "RznZAH6L4RNvroECT5JpqfFQJjHTn+8N7+ThSgYutbshkuymFeL/uBIZt1CM8LOdpPPhn4//a5fLUah9/k7ayQ==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.4", + "Microsoft.Extensions.ServiceDiscovery.Abstractions": "10.4.0" + } + }, + "Microsoft.IdentityModel.Tokens": { + "type": "CentralTransitive", + "requested": "[8.17.0, )", + "resolved": "8.17.0", + "contentHash": "teaW35URIV2x78Tzk+dVJiC4M62/9mQoSEoDjDGoEZmcQa3H2rE+XQpm9Tmdo9KK1Lcrnve4zoyLavl69kCFGg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.17.0" + } + }, + "Npgsql.EntityFrameworkCore.PostgreSQL": { + "type": "CentralTransitive", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "P6EwH0Q4xkaA264iNZDqCPhWt8pscfUGxXazDQg4noBfqjoOlk4hKWfvBjF9ZX3R/9JybRmmJfmxr2iBMj0EpA==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", + "Npgsql": "10.0.2" + } + }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "400L64MwDd1s2bj4fFJblo3Hf5rXE3bhJUlOSBcLF6QP1Ln116Eqnwnesxhg2siDxOgHYLjcfCC8ByJTDEpNFQ==", + "dependencies": { + "OpenTelemetry": "1.15.1" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "/mN9I16P8miDSHogFC0OFyPzUvYXibk/rLFLXW3Io50IN+XEQx7E6dSyUdMRdY+NKmOCo/oS5ICXkjdoFrwq2A==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.15.1" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "wXaZTu6LHY8xcbRd6ClcrtjHqGVoGYCcArXEZA3iUjUcYSVYwDGyPU0PdkwTfylxv8JeCCVDQhVb0fT7xBJjGA==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.15.0-beta.1, )", + "resolved": "1.15.0-beta.1", + "contentHash": "N01GzP+r8lpSBiqjRX0/WjSp17r+zk6dKvGKthiASyFzF44lrJo8cA3ihXnw3p4Rnqg1mVjOYy19R6iJ84NTpg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.GrpcNetClient": { + "type": "CentralTransitive", + "requested": "[1.15.0-beta.1, )", + "resolved": "1.15.0-beta.1", + "contentHash": "SBas5+C4kGUqoy8OPpQis+QIgJ7/aaJl4H3oLzHCJnZLCb8TXZmQL2/r753RXXJUH8oIeLIzdW+EXgujSy+cpQ==", + "dependencies": { + "OpenTelemetry": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.15.0, )", + "resolved": "1.15.0", + "contentHash": "uToc7bUp8IEdb0ny9mKsL6FrrYelINPzxxiSShJgOf4XmQc4Azww6S5RjRj24YhsOn2a1MABOrxfVTZXtDk4Eg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.15.0, )", + "resolved": "1.15.0", + "contentHash": "OOvpqR/j2Pb6+tWhHNODIbSJ53Or/MDtTiXEyrsWI02K2lLAgvBFcxUOrHggS/8015cYR3AdSaXv6NZrkz5yQA==", + "dependencies": { + "OpenTelemetry.Api": "[1.15.0, 2.0.0)" + } + }, + "Serilog.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.0.0, )", + "resolved": "10.0.0", + "contentHash": "a/cNa1mY4On1oJlfGG1wAvxjp5g7OEzk/Jf/nm7NF9cWoE7KlZw1GldrifUBWm9oKibHkR7Lg/l5jy3y7ACR8w==", + "dependencies": { + "Serilog": "4.3.0", + "Serilog.Extensions.Hosting": "10.0.0", + "Serilog.Formatting.Compact": "3.0.0", + "Serilog.Settings.Configuration": "10.0.0", + "Serilog.Sinks.Console": "6.1.1", + "Serilog.Sinks.Debug": "3.0.0", + "Serilog.Sinks.File": "7.0.0" + } + }, + "Serilog.Sinks.Console": { + "type": "CentralTransitive", + "requested": "[6.1.1, )", + "resolved": "6.1.1", + "contentHash": "8jbqgjUyZlfCuSTaJk6lOca465OndqOz3KZP6Cryt/IqZYybyBu7GP0fE/AXBzrrQB3EBmQntBFAvMVz1COvAA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Serilog.Sinks.File": { + "type": "CentralTransitive", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "fKL7mXv7qaiNBUC71ssvn/dU0k9t0o45+qm2XgKAlSt19xF+ijjxyA3R6HmCgfKEKwfcfkwWjayuQtRueZFkYw==", + "dependencies": { + "Serilog": "4.2.0" + } + }, + "Serilog.Sinks.OpenTelemetry": { + "type": "CentralTransitive", + "requested": "[4.2.0, )", + "resolved": "4.2.0", + "contentHash": "PzMCyE5G19tjr5IZEi5qg+4UU5QrxBEoBEMu/hhYybTrGKXqUDiSGWKZNUDBgelaVKqLADlsmlJVyKce5SyPrg==", + "dependencies": { + "Google.Protobuf": "3.30.1", + "Grpc.Net.Client": "2.70.0", + "Serilog": "4.2.0" + } + }, + "System.Security.Cryptography.ProtectedData": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "kxR4O/8o32eNN3m4qbLe3UifYqeyEpallCyVAsLvL5ZFJVyT3JCb+9du/WHfC09VyJh1Q+p/Gd4+AwM7Rz4acg==" + }, + "TimeZoneNames": { + "type": "CentralTransitive", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "zc1sIJZMDH7pPO1Gqte9yjMEFSILShTRNuxVxnNdiZP4NGGSi3ZGe2OSrW2phjzM/QKe3pKOwUXfQmJMjDBOKQ==", + "dependencies": { + "TimeZoneConverter": "7.0.0" + } + } + } + } } \ No newline at end of file diff --git a/src/Test/Werkr.Tests.Data/Unit/Audit/AuditEventTypeRegistryTests.cs b/src/Test/Werkr.Tests.Data/Unit/Audit/AuditEventTypeRegistryTests.cs index 86f2694..84efc21 100644 --- a/src/Test/Werkr.Tests.Data/Unit/Audit/AuditEventTypeRegistryTests.cs +++ b/src/Test/Werkr.Tests.Data/Unit/Audit/AuditEventTypeRegistryTests.cs @@ -78,7 +78,7 @@ public void RegisterCoreAuditEvents_RegistersAllExpectedTypes( ) { _ = registry.RegisterCoreAuditEvents( ); IReadOnlyList all = registry.GetAll( ); - Assert.HasCount( 45, all ); + Assert.HasCount( 56, all ); } [TestMethod] @@ -127,6 +127,17 @@ public void RegisterCoreAuditEvents_RegistersAllExpectedTypes( ) { [DataRow( CredentialScopeUpdated )] [DataRow( CredentialAccessed )] [DataRow( RetentionSweepCompleted )] + [DataRow( NotificationChannelCreated )] + [DataRow( NotificationChannelUpdated )] + [DataRow( NotificationChannelDeleted )] + [DataRow( NotificationChannelTested )] + [DataRow( NotificationSubscriptionCreated )] + [DataRow( NotificationSubscriptionUpdated )] + [DataRow( NotificationSubscriptionDeleted )] + [DataRow( NotificationPreferenceUpdated )] + [DataRow( NotificationDeliverySent )] + [DataRow( NotificationDeliveryFailed )] + [DataRow( NotificationDeliveryDeadLettered )] public void RegisterCoreAuditEvents_ContainsEventType( AuditEventType eventType ) { AuditEventTypeRegistry registry = new( ); _ = registry.RegisterCoreAuditEvents( ); diff --git a/src/Test/Werkr.Tests.Data/Unit/Configuration/ConfigurationResolutionServiceTests.cs b/src/Test/Werkr.Tests.Data/Unit/Configuration/ConfigurationResolutionServiceTests.cs index f0a3850..5ab252e 100644 --- a/src/Test/Werkr.Tests.Data/Unit/Configuration/ConfigurationResolutionServiceTests.cs +++ b/src/Test/Werkr.Tests.Data/Unit/Configuration/ConfigurationResolutionServiceTests.cs @@ -233,5 +233,6 @@ private sealed class NoopAuditService : IAuditService { Task.FromResult( new PagedResult( [], 0, 25, 0 ) ); public Task ExportAsync( AuditQuery query, ExportFormat format, Stream outputStream, CancellationToken ct = default, int? maxRows = null ) => Task.CompletedTask; + public Task> GetEntityTypesAsync( CancellationToken ct = default ) => throw new NotImplementedException( ); } } diff --git a/src/Test/Werkr.Tests.Data/Unit/Credentials/CredentialResolverTests.cs b/src/Test/Werkr.Tests.Data/Unit/Credentials/CredentialResolverTests.cs index 2f6ca97..11a3e64 100644 --- a/src/Test/Werkr.Tests.Data/Unit/Credentials/CredentialResolverTests.cs +++ b/src/Test/Werkr.Tests.Data/Unit/Credentials/CredentialResolverTests.cs @@ -13,9 +13,9 @@ public class CredentialResolverTests { /// Finds a credential referenced via the CredentialName property. [TestMethod] public void FindCredentialReferences_FindsCredentialName( ) { - const string json = """{"ActionType":"SendEmail","CredentialName":"smtp-cred","SmtpHost":"mail.local"}"""; + const string Json = """{"ActionType":"SendEmail","CredentialName":"smtp-cred","SmtpHost":"mail.local"}"""; - IReadOnlyList refs = CredentialResolver.FindCredentialReferences( json ); + IReadOnlyList refs = CredentialResolver.FindCredentialReferences( Json ); Assert.HasCount( 1, refs ); Assert.AreEqual( "smtp-cred", refs[0] ); @@ -24,9 +24,9 @@ public void FindCredentialReferences_FindsCredentialName( ) { /// Finds a credential referenced via the AuthCredential property. [TestMethod] public void FindCredentialReferences_FindsAuthCredential( ) { - const string json = """{"ActionType":"HttpRequest","AuthCredential":"api-key-1","Url":"https://example.com"}"""; + const string Json = """{"ActionType":"HttpRequest","AuthCredential":"api-key-1","Url":"https://example.com"}"""; - IReadOnlyList refs = CredentialResolver.FindCredentialReferences( json ); + IReadOnlyList refs = CredentialResolver.FindCredentialReferences( Json ); Assert.HasCount( 1, refs ); Assert.AreEqual( "api-key-1", refs[0] ); @@ -35,9 +35,9 @@ public void FindCredentialReferences_FindsAuthCredential( ) { /// Finds credentials in nested JSON structures. [TestMethod] public void FindCredentialReferences_FindsNestedReferences( ) { - const string json = """{"Outer":{"CredentialName":"cred-a","Inner":{"AuthCredential":"cred-b"}}}"""; + const string Json = """{"Outer":{"CredentialName":"cred-a","Inner":{"AuthCredential":"cred-b"}}}"""; - IReadOnlyList refs = CredentialResolver.FindCredentialReferences( json ); + IReadOnlyList refs = CredentialResolver.FindCredentialReferences( Json ); Assert.HasCount( 2, refs ); CollectionAssert.Contains( refs.ToList( ), "cred-a" ); @@ -47,9 +47,9 @@ public void FindCredentialReferences_FindsNestedReferences( ) { /// Returns empty when no credential properties are present. [TestMethod] public void FindCredentialReferences_ReturnsEmptyForNoReferences( ) { - const string json = """{"ActionType":"ShellCommand","Content":"echo hello"}"""; + const string Json = """{"ActionType":"ShellCommand","Content":"echo hello"}"""; - IReadOnlyList refs = CredentialResolver.FindCredentialReferences( json ); + IReadOnlyList refs = CredentialResolver.FindCredentialReferences( Json ); Assert.HasCount( 0, refs ); } @@ -73,9 +73,9 @@ public void FindCredentialReferences_HandlesMalformedJson( ) { /// De-duplicates identical credential names. [TestMethod] public void FindCredentialReferences_DeduplicatesNames( ) { - const string json = """{"CredentialName":"shared","Inner":{"AuthCredential":"shared"}}"""; + const string Json = """{"CredentialName":"shared","Inner":{"AuthCredential":"shared"}}"""; - IReadOnlyList refs = CredentialResolver.FindCredentialReferences( json ); + IReadOnlyList refs = CredentialResolver.FindCredentialReferences( Json ); Assert.HasCount( 1, refs ); } @@ -85,9 +85,9 @@ public void FindCredentialReferences_DeduplicatesNames( ) { /// Replaces a CredentialName property value when it matches. [TestMethod] public void ReplaceCredentialName_ReplacesMatchingProperties( ) { - const string json = """{"ActionType":"SendEmail","CredentialName":"old-cred","SmtpHost":"mail.local"}"""; + const string Json = """{"ActionType":"SendEmail","CredentialName":"old-cred","SmtpHost":"mail.local"}"""; - string? result = CredentialResolver.ReplaceCredentialName( json, "old-cred", "new-cred" ); + string? result = CredentialResolver.ReplaceCredentialName( Json, "old-cred", "new-cred" ); Assert.IsNotNull( result ); Assert.Contains( "new-cred", result ); @@ -97,9 +97,9 @@ public void ReplaceCredentialName_ReplacesMatchingProperties( ) { /// Preserves non-credential properties unchanged. [TestMethod] public void ReplaceCredentialName_PreservesOtherProperties( ) { - const string json = """{"ActionType":"SendEmail","CredentialName":"old-cred","SmtpHost":"mail.local"}"""; + const string Json = """{"ActionType":"SendEmail","CredentialName":"old-cred","SmtpHost":"mail.local"}"""; - string? result = CredentialResolver.ReplaceCredentialName( json, "old-cred", "new-cred" ); + string? result = CredentialResolver.ReplaceCredentialName( Json, "old-cred", "new-cred" ); Assert.IsNotNull( result ); Assert.Contains( "SendEmail", result ); @@ -109,9 +109,9 @@ public void ReplaceCredentialName_PreservesOtherProperties( ) { /// Returns null when no credential property matches the old name. [TestMethod] public void ReplaceCredentialName_ReturnsNullWhenNoMatch( ) { - const string json = """{"ActionType":"ShellCommand","Content":"echo hello"}"""; + const string Json = """{"ActionType":"ShellCommand","Content":"echo hello"}"""; - string? result = CredentialResolver.ReplaceCredentialName( json, "old-cred", "new-cred" ); + string? result = CredentialResolver.ReplaceCredentialName( Json, "old-cred", "new-cred" ); Assert.IsNull( result ); } diff --git a/src/Test/Werkr.Tests.Data/Unit/Credentials/CredentialServiceTests.cs b/src/Test/Werkr.Tests.Data/Unit/Credentials/CredentialServiceTests.cs index ca62486..fccc8fb 100644 --- a/src/Test/Werkr.Tests.Data/Unit/Credentials/CredentialServiceTests.cs +++ b/src/Test/Werkr.Tests.Data/Unit/Credentials/CredentialServiceTests.cs @@ -282,5 +282,6 @@ private sealed class NoopAuditService : IAuditService { Task.FromResult( new PagedResult( [], 0, 25, 0 ) ); public Task ExportAsync( AuditQuery query, ExportFormat format, Stream outputStream, CancellationToken ct = default, int? maxRows = null ) => Task.CompletedTask; + public Task> GetEntityTypesAsync( CancellationToken ct = default ) => throw new NotImplementedException( ); } } diff --git a/src/Test/Werkr.Tests.Data/Unit/Tasks/TaskServiceTests.cs b/src/Test/Werkr.Tests.Data/Unit/Tasks/TaskServiceTests.cs index ed40058..5716c19 100644 --- a/src/Test/Werkr.Tests.Data/Unit/Tasks/TaskServiceTests.cs +++ b/src/Test/Werkr.Tests.Data/Unit/Tasks/TaskServiceTests.cs @@ -462,5 +462,6 @@ private sealed class NoopAuditService : IAuditService { Task.FromResult( new PagedResult( [], 0, 25, 0 ) ); public Task ExportAsync( AuditQuery query, ExportFormat format, Stream outputStream, CancellationToken ct = default, int? maxRows = null ) => Task.CompletedTask; + public Task> GetEntityTypesAsync( CancellationToken ct = default ) => throw new NotImplementedException( ); } } diff --git a/src/Test/Werkr.Tests.Data/Unit/Workflows/WorkflowServiceTests.cs b/src/Test/Werkr.Tests.Data/Unit/Workflows/WorkflowServiceTests.cs index 74723d8..a2aa067 100644 --- a/src/Test/Werkr.Tests.Data/Unit/Workflows/WorkflowServiceTests.cs +++ b/src/Test/Werkr.Tests.Data/Unit/Workflows/WorkflowServiceTests.cs @@ -809,5 +809,6 @@ private sealed class NoopAuditService : IAuditService { Task.FromResult( new PagedResult( [], 0, 25, 0 ) ); public Task ExportAsync( AuditQuery query, ExportFormat format, Stream outputStream, CancellationToken ct = default, int? maxRows = null ) => Task.CompletedTask; + public Task> GetEntityTypesAsync( CancellationToken ct = default ) => throw new NotImplementedException( ); } } diff --git a/src/Test/Werkr.Tests.Data/packages.lock.json b/src/Test/Werkr.Tests.Data/packages.lock.json index b6bb870..13bc90c 100644 --- a/src/Test/Werkr.Tests.Data/packages.lock.json +++ b/src/Test/Werkr.Tests.Data/packages.lock.json @@ -1,1191 +1,1191 @@ -{ - "version": 2, - "dependencies": { - "net10.0": { - "MSTest": { - "type": "Direct", - "requested": "[4.1.0, )", - "resolved": "4.1.0", - "contentHash": "2bk47yg7HcHRyf6Zf0XgCZicTVTQj4D5lonYTO7lWMxCQB+x66VrQNc2dADBfzthKXfHaA37m8i+VV5h6SbWiA==", - "dependencies": { - "MSTest.TestAdapter": "4.1.0", - "MSTest.TestFramework": "4.1.0", - "Microsoft.NET.Test.Sdk": "18.0.1", - "Microsoft.Testing.Extensions.CodeCoverage": "18.4.1", - "Microsoft.Testing.Extensions.TrxReport": "2.1.0" - } - }, - "BouncyCastle.Cryptography": { - "type": "Transitive", - "resolved": "2.6.2", - "contentHash": "7oWOcvnntmMKNzDLsdxAYqApt+AjpRpP2CShjMfIa3umZ42UQMvH0tl1qAliYPNYO6vTdcGMqnRrCPmsfzTI1w==" - }, - "Grpc.AspNetCore.Server": { - "type": "Transitive", - "resolved": "2.76.0", - "contentHash": "diSC/ZeNdSdxHdYSOpYwuSBBDYpuNVtJQFJfiBB0WrYOQ4lVMmdxuUZJcViahQyo8pCvS3Mueo5lqFxwwMF/iw==", - "dependencies": { - "Grpc.Net.Common": "2.76.0" - } - }, - "Grpc.AspNetCore.Server.ClientFactory": { - "type": "Transitive", - "resolved": "2.76.0", - "contentHash": "y5KGO1GO0N2L/hCCMR05mmoK8j+v8rKvZ+9nothAxKx2Tf2CwV8f4TM5K0GkKfDsp4vrc4lm90MU6E+DeN7YIw==", - "dependencies": { - "Grpc.AspNetCore.Server": "2.76.0", - "Grpc.Net.ClientFactory": "2.76.0" - } - }, - "Grpc.Core.Api": { - "type": "Transitive", - "resolved": "2.76.0", - "contentHash": "cSxC2tdnFdXXuBgIn1pjc4YBx7LXTCp4M0qn+SMBS35VWZY+cEQYLWTBDDhdBH1HzU7BV+ncVZlniGQHMpRJKQ==" - }, - "Grpc.Net.Common": { - "type": "Transitive", - "resolved": "2.76.0", - "contentHash": "bZpiMVYgvpB44/wBh1RotrkqC7bg2FOasLri2GhR3hMKyzsiTxCoDE49YjPrJeFc4RW0wS8u+EInI09sjxVFRA==", - "dependencies": { - "Grpc.Core.Api": "2.76.0" - } - }, - "Microsoft.ApplicationInsights": { - "type": "Transitive", - "resolved": "2.23.0", - "contentHash": "nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw==" - }, - "Microsoft.AspNetCore.Cryptography.Internal": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "kFUpNRYySfqNLuQKGMKZ2mK8b86R1zizlc9QB6R/Ess0rSkrA8pRNCMSFm+DqUnNfm5G3FWjsYIJOKYyhkHeig==" - }, - "Microsoft.AspNetCore.Cryptography.KeyDerivation": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "NkWUZYkL6wavYY2wMZgnODzsyTOZhcRxP/DJvZlBbWEJViukdyuIqtdTzltODyjsc3MjEvxmbPDDk2KgGv6tMA==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.Internal": "10.0.5" - } - }, - "Microsoft.AspNetCore.Metadata": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "nXVB1K4RzyhDHKYWLiq3+aJopJZKO5ojFqHV9PZ74fe4VWM/8itoouqsd2KIqSooIwQ13UDNlPQfN2rWr7hc2A==" - }, - "Microsoft.CodeCoverage": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "O+utSr97NAJowIQT/OVp3Lh9QgW/wALVTP4RG1m2AfFP4IyJmJz0ZBmFJUsRQiAPgq6IRC0t8AAzsiPIsaUDEA==" - }, - "Microsoft.DiaSymReader": { - "type": "Transitive", - "resolved": "2.0.0", - "contentHash": "QcZrCETsBJqy/vQpFtJc+jSXQ0K5sucQ6NUFbTNVHD4vfZZOwjZ/3sBzczkC4DityhD3AVO/+K/+9ioLs1AgRA==" - }, - "Microsoft.EntityFrameworkCore.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "32c58Rnm47Qvhimawf67KO9PytgPz3QoWye7Abapt0Yocw/JnzMiSNj/pRoIKyn8Jxypkv86zxKD4Q/zNTc0Ag==" - }, - "Microsoft.EntityFrameworkCore.Analyzers": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "ipC4u1VojgEfoIZhtbS2Sx5IluJTP/Jf1hz3yGsxGBgSukYY/CquI6rAjxn5H58CZgVn36qcuPPtNMwZ0AUzMg==" - }, - "Microsoft.EntityFrameworkCore.Relational": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "uxmFjZEAB/KbsgWFSS4lLqkEHCfXxB2x0UcbiO4e5fCRpFFeTMSx/me6009nYJLu5IKlDwO1POh++P6RilFTDw==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5" - } - }, - "Microsoft.EntityFrameworkCore.Sqlite.Core": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "rVH43bcUyZiMn0SnCpVnvFpl4PFxT4GwmuVVLcT4JL0NtzuHY9ymKV+Llb5cjuJ+6+gEl4eixy2rE8nxOPcBSA==", - "dependencies": { - "Microsoft.Data.Sqlite.Core": "10.0.5", - "Microsoft.EntityFrameworkCore.Relational": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyModel": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "SQLitePCLRaw.core": "2.1.11" - } - }, - "Microsoft.Extensions.AmbientMetadata.Application": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "bovnONzrr/JIc+w343i857rJEb7cQH9UzEjbV5n67agWBEYICGQb8xiqYz5+GoFXp6mKEKLwYCQGttMU1p5yXQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.4", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.4", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "k/QDdQ94/0Shi0KfU+e12m73jfQo+3JpErTtgpZfsCIqkvdEEO0XIx6R+iTbN55rNPaNhOqNY4/sB+jZ8XxVPw==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Caching.Memory": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "jUEXmkBUPdOS/MP9areK/sbKhdklq9+tEhvwfxGalZVnmyLUO5rrheNNutUBtvbZ7J8ECkG7/r2KXi/IFC06cA==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "4WkknDbVrHNf+S6fwSt1OAXlGJ/G/QrtJlqx4aNzOLmeT3GRyxpGLZn+Q3UV+RMRAF6FfsijEZBg2ZAW8bTAkg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.ObjectPool": "10.0.4" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "8Rx5sqg04FttxrumyG6bmoRuFRgYzK6IVwF1i0/o0cXfKBdDeVpJejKHtJCMjyg9E/DNMVqpqOGe/tCT5gYvVA==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "99Z4rjyXopb1MIazDSPcvwYCUdYNO01Cf1GUs2WUjIFAbkGmwzj2vPa2k+3pheJRV+YgNd2QqRKHAri0oBAU4Q==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "OhTr0O79dP49734lLTqVveivVX9sDXxbI/8vjELAZTHXqoN90mdpgTAgwicJED42iaHMCcZcK6Bj+8wNyBikaw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", - "Microsoft.Extensions.FileProviders.Physical": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "v1SVsowG6YE1YnHVGmLWz57YTRCQRx9pH5ebIESXfm5isI9gA3QaMyg/oMTzPpXYZwSAVDzYItGJKfmV+pqXkQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "iVMtq9eRvzyhx8949EGT0OCYJfXi737SbRVzWXE5GrOgGj5AaZ9eUuxA/BSUfmOMALKn/g8KfFaNQw0eiB3lyA==" - }, - "Microsoft.Extensions.DependencyInjection.AutoActivation": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "ksmUG2SFTcXzYdyoLOdeSM/qYLRGN6qbbSzYVkwMK9xsctfR1hYkUayeOpFCMd7L+QSlYX72mK9wxwdgQxyS4g==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "10.0.4" - } - }, - "Microsoft.Extensions.DependencyModel": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "xA4kkL+QS6KCAOKz/O0oquHs44Ob8J7zpBCNt3wjkBWDg5aCqfwG8rWWLsg5V86AM0sB849g9JjPjIdksTCIKg==" - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "vAJHd4yOpmKoK+jBuYV7a3y+Ab9U4ARCc29b6qvMy276RgJFw9LFs0DdsPqOL3ahwzyrX7tM+i4cCxU/RX0qAg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.5" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "/nYGrpa9/0BZofrVpBbbj+Ns8ZesiPE0V/KxsuHgDgHQopIzN54nRaQGSuvPw16/kI9sW1Zox5yyAPqvf0Jz6A==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "1/hQmONMWxRTKXuN0pQShQN9QsqIRTS1G4fdmKW0O9phuVZjyzIROQD9Fbfwyn2t+yvP8SzjatGAPX4jDRfgHg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4" - } - }, - "Microsoft.Extensions.Features": { - "type": "Transitive", - "resolved": "10.0.4", - "contentHash": "7to+nkZO+g/GiGQOBzAcrr8HcG8dXETI/hg58fJju0jPO9p/GvNLAis8kMPTBdsjfeTfslBrgFX9Yx1KRnKDww==" - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "nCBmCx0Xemlu65ZiWMcXbvfvtznKxf4/YYKF9R28QkqdI9lTikedGqzJ28/xmdGGsxUnsP5/3TQGpiPwVjK0dA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.FileProviders.Embedded": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "DQzkbLFNfwmjxErAnWyZTTyBd4cMo6vmGteM4Ayedhk5Pccm2VuKoeKcOZjJG1T+dYK6lMCNk2L7Ftl7dLhgqg==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.FileProviders.Physical": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "dMu5kUPSfol1Rqhmr6nWPSmbFjDe9w6bkoKithG17bWTZA0UyKirTatM5mqYUN3mGpNA0MorlusIoVTh6J7o5g==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "mOE3ARusNQR0a5x8YOcnUbfyyXGqoAWQtEc7qFOfNJgruDWQLo39Re+3/Lzj5pLPFuFYj8hN4dgKzaSQDKiOCw==" - }, - "Microsoft.Extensions.Http.Diagnostics": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "ybx2QcCWROCnUCbSj/IyHXn1c58brjjHzTTbueKgBl/qHsWk69mu25mjQ3oaMsO1I0+EcS6AhVuhIopL2q3IDw==", - "dependencies": { - "Microsoft.Extensions.Http": "10.0.4", - "Microsoft.Extensions.Telemetry": "10.4.0" - } - }, - "Microsoft.Extensions.Identity.Core": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "ew2Xob+HFvJvM7BelIrUIbGeVMO2q1A6gsZEsI8N/v0ddSv7qbvvY68mH16XzvlsqydqD3ct5ioQHsiEUDSNkg==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.KeyDerivation": "10.0.5", - "Microsoft.Extensions.Diagnostics": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.Extensions.Identity.Stores": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "St8g+4xGLUhfSzTlHSLtCv7kh/tppvFab5x0kFIOsWryf1ffK2Ux+JIg01v5Yf27g2iQLCFEmW5hG5DDZL1HLA==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.5", - "Microsoft.Extensions.Identity.Core": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5" - } - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "+XTMKQyDWg4ODoNHU/BN3BaI1jhGO7VCS+BnzT/4IauiG6y2iPAte7MyD7rHKS+hNP0TkFkjrae8DFjDUxtcxg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "10.0.4", - "contentHash": "XPXoOpUnWEh0pV7Vl2DK2wj47y73Krhrve5OkPrvGIWdZ4U2r47WO8hEdv+wKn65Kh4pmDdiWm7Ibo5pZX+vig==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.4", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", - "Microsoft.Extensions.Configuration.Binder": "10.0.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.Logging": "10.0.4", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "10.0.4", - "contentHash": "2pufIFOgNl/yWTOoIC9XgBnO9VxgfAjdRCnVwpE2+ICfcroGnjuEAGzJ5lTdZeAe0HvA31vMBWXtcmGB7TOq3g==" - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "MDaQMdUplw0AIRhWWmbLA7yQEXaLIHb+9CTroTiNS8OlI0LMXS4LCxtopqauiqGCWlRgJ+xyraVD8t6veRAFbw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "BB9uUW3+6Rxu1R97OB1H/13lUF8P2+H1+eDhpZlK30kDh/6E4EKHBUqTp+ilXQmZLzsRErxON8aBSR6WpUKJdg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Configuration.Binder": "10.0.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "/HUHJ0tw/LQvD0DZrz50eQy/3z7PfX7WWEaXnjKTV9/TNdcgFlNTZGo49QhS7PTmhDqMyHRMqAXSBxLh0vso4g==" - }, - "Microsoft.Extensions.Resilience": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "41CCbJJPsDWU6NsmKfANHkfT/+KCBlZZqQ1eBoQhhW0xqGCiWmUlMdi2BoaM/GcwKHX5WiQL/IESROmgk0Owfw==", - "dependencies": { - "Microsoft.Extensions.Diagnostics": "10.0.4", - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.4.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4", - "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0", - "Polly.Extensions": "8.4.2", - "Polly.RateLimiting": "8.4.2" - } - }, - "Microsoft.Extensions.ServiceDiscovery.Abstractions": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "HkBb7cdi27tkQiQw1anQFbXe+A3pjRwDKgVbd/DD9fMAO2X9abK0FEyM/tNVXjW3lwOWl2tF+Xij/DqI6i+JTg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", - "Microsoft.Extensions.Configuration.Binder": "10.0.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.Features": "10.0.4", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4", - "Microsoft.Extensions.Primitives": "10.0.4" - } - }, - "Microsoft.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "AbHleTzdpGPjA6RpOjKVHEYx7SoBRnJ2bwAbbPa3aGB7HiVwBmeTJhBGhtIBiuIW0VpKDS8x+bV5iWqpBRIf4w==", - "dependencies": { - "Microsoft.Extensions.AmbientMetadata.Application": "10.4.0", - "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.4.0", - "Microsoft.Extensions.Logging.Configuration": "10.0.4", - "Microsoft.Extensions.ObjectPool": "10.0.4", - "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0" - } - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "3b2uVa4voJfLLg39BPCKQS0ZgnpEZFkKf7YmnMVlM5FQJYBPOuePIQdnEK1/Oxd+w3GscxGYuE7IMOXDwixZtQ==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "10.4.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.ObjectPool": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4" - } - }, - "Microsoft.IdentityModel.Abstractions": { - "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "gSxKLWRZzBpIsEoeUPkxfywNCCvRvl7hkq146XHPk5vOQc9izSf1I+uL1vh4y2U19QPxd9Z8K/8AdWyxYz2lSg==" - }, - "Microsoft.IdentityModel.Logging": { - "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "MTzXmETkNQPACR7/XCXM1OGM6oU9RkyibqeJRtO9Ndew2LnGjMf9Atqj2VSf4XC27X0FQycUAlzxxEgQMWn2xQ==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.16.0" - } - }, - "Microsoft.IdentityModel.Protocols": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "uA2vpKqU3I2mBBEaeJAWPTjT9v1TZrGWKdgK6G5qJd03CLx83kdiqO9cmiK8/n1erkHzFBwU/RphP83aAe3i3g==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "8.0.1" - } - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "AQDbfpL+yzuuGhO/mQhKNsp44pm5Jv8/BI4KiFXR7beVGZoSH35zMV3PrmcfvSTsyI6qrcR898NzUauD6SRigg==", - "dependencies": { - "Microsoft.IdentityModel.Protocols": "8.0.1", - "System.IdentityModel.Tokens.Jwt": "8.0.1" - } - }, - "Microsoft.NET.Test.Sdk": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "WNpu6vI2rA0pXY4r7NKxCN16XRWl5uHu6qjuyVLoDo6oYEggIQefrMjkRuibQHm/NslIUNCcKftvoWAN80MSAg==", - "dependencies": { - "Microsoft.CodeCoverage": "18.0.1", - "Microsoft.TestPlatform.TestHost": "18.0.1" - } - }, - "Microsoft.OpenApi": { - "type": "Transitive", - "resolved": "2.0.0", - "contentHash": "GGYLfzV/G/ct80OZ45JxnWP7NvMX1BCugn/lX7TH5o0lcVaviavsLMTxmFV2AybXWjbi3h6FF1vgZiTK6PXndw==" - }, - "Microsoft.Testing.Extensions.CodeCoverage": { - "type": "Transitive", - "resolved": "18.4.1", - "contentHash": "l1VZM9dg9s76L5D288ipAT4HRYDJ6Vxh8wX20gfS9VnpueedRfN4/aGNn4oA1g6pwq2WSM3Ci7IoSSGPiqu+WQ==", - "dependencies": { - "Microsoft.DiaSymReader": "2.0.0", - "Microsoft.Extensions.DependencyModel": "8.0.2", - "Microsoft.Testing.Platform": "2.0.2" - } - }, - "Microsoft.Testing.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "5TwgTx2u7k9Al/xbZ18QXq4Hdy2xewkVTI6K3sk+jY2ykqUkIKNuj7rFu3GOV5KnEUkevhw6eZcyZs77STHJIA==", - "dependencies": { - "Microsoft.ApplicationInsights": "2.23.0", - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Extensions.TrxReport": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "cXmP225WcMLLOSrW8xekaNhfzdBwXX3cbXbE5qSzmLbK0KZe3z8rAObKj70FWiPPPzm2W22x0ZW93gsmAfK6Mg==", - "dependencies": { - "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Extensions.TrxReport.Abstractions": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "D8xmIJYQFJ6D49Rx5/vPrkZZxb338Jkew+eSqZLBfBiWKw4QZKy3i1BOXiLfz0lOmaNErwDz/YWRojCdNl+B9Q==", - "dependencies": { - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Extensions.VSTestBridge": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "bNRIEA2YoGr+Y+7LHdA7i1U80+7BAdf4K4Qh4Kx6eKkoBK/NV7QpoMg+GWPP0/eqAFzuUmUOIPVZ87Oo0Vyxmw==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "18.0.1", - "Microsoft.Testing.Extensions.Telemetry": "2.1.0", - "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Platform": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "aHkjNTGIA+Zbdw6RJgSFrbDrCjO0CgqpElqYcvkRSeUhBv2bKarnvU3ep786U7UqrPlArT/B7VmImRibJD0Zrg==" - }, - "Microsoft.Testing.Platform.MSBuild": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "UpfPebXQtHGrWz21+YLHmJSm+5zsuPE9U9pfdCtoB+67g75fDmWlNgpkH2ZmdVhSwkjNIed9Icg8Iu63z2ei5Q==", - "dependencies": { - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.TestPlatform.ObjectModel": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "qT/mwMcLF9BieRkzOBPL2qCopl8hQu6A1P7JWAoj/FMu5i9vds/7cjbJ/LLtaiwWevWLAeD5v5wjQJ/l6jvhWQ==" - }, - "Microsoft.TestPlatform.TestHost": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "uDJKAEjFTaa2wHdWlfo6ektyoh+WD4/Eesrwb4FpBFKsLGehhACVnwwTI4qD3FrIlIEPlxdXg3SyrYRIcO+RRQ==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "18.0.1", - "Newtonsoft.Json": "13.0.3" - } - }, - "MimeKit": { - "type": "Transitive", - "resolved": "4.15.1", - "contentHash": "cxCcQhD0zhboFoG136jJuJtQjNRDJ+BxBm3f2vWn+53bff/CRo+K1mAkWjsW4Wuyy5O22F40MdMG2nRzQu1cJw==", - "dependencies": { - "BouncyCastle.Cryptography": "2.6.2", - "System.Security.Cryptography.Pkcs": "10.0.0" - } - }, - "MSTest.Analyzers": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "4ElL/aqomiUInr090VN4udqz46AuszXLrifHkLrgj0zb7na8eAoyUQt3BwDLTcGd1bSkmk3SfD02rZtKU+ZiqQ==" - }, - "MSTest.TestAdapter": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "bRW1Hftwq0XbcVExcAbj4YAfSZDRAziL0mygDkPBvaUe2nSsWFQIatze5lHVjPFJMvSFgWnItku4pguIy5FowQ==", - "dependencies": { - "MSTest.TestFramework": "4.1.0", - "Microsoft.Testing.Extensions.VSTestBridge": "2.1.0", - "Microsoft.Testing.Platform.MSBuild": "2.1.0" - } - }, - "MSTest.TestFramework": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "BzpvsK+CRbk6khwY62h+7HfYzIxtJXyPv9tOI9T90cy5CVy+WI1JkN4ZaNL4Dobqb6dywSwabLTIbPZKpdrr+A==", - "dependencies": { - "MSTest.Analyzers": "4.1.0" - } - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.3", - "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" - }, - "Npgsql": { - "type": "Transitive", - "resolved": "10.0.2", - "contentHash": "q5RfBI+wywJSFUNDE1L4ZbHEHCFTblo8Uf6A6oe4feOUFYiUQXyAf9GBh5qEZpvJaHiEbpBPkQumjEhXCJxdrg==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0" - } - }, - "OpenTelemetry": { - "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "7mS/oZFF8S6xyqGQfMU1btp0nXJQUPWV535Vp/XMLYwRAUv36xQN+U4vufWBF1+z4HnRTOwuFHtUSGnHbyN6FQ==", - "dependencies": { - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", - "Microsoft.Extensions.Logging.Configuration": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.0" - } - }, - "OpenTelemetry.Api": { - "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "vk5OGdf6K9kQScCWo3bRjhDWCv6Pqw92IpX4dlARZ8B1WL7/2NGTDtCkkw42eQf7UdwyoHKzVvMH/PtL8d6z7w==" - }, - "OpenTelemetry.Api.ProviderBuilderExtensions": { - "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "OnuSUlRpGvowkOzGFQfy+KZFu0cITfKfh2IYJJiZskxVJiOuexwOOuvfDAgpJdmTzVWAHjYdz2shcHZaJ06UjQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "OpenTelemetry.Api": "1.15.0" - } - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" - }, - "Polly.Extensions": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Polly.Core": "8.4.2" - } - }, - "Polly.RateLimiting": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", - "dependencies": { - "Polly.Core": "8.4.2", - "System.Threading.RateLimiting": "8.0.0" - } - }, - "Serilog": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "+cDryFR0GRhsGOnZSKwaDzRRl4MupvJ42FhCE4zhQRVanX0Jpg6WuCBk59OVhVDPmab1bB+nRykAnykYELA9qQ==" - }, - "Serilog.Extensions.Hosting": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Serilog": "4.3.0", - "Serilog.Extensions.Logging": "10.0.0" - } - }, - "Serilog.Extensions.Logging": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", - "dependencies": { - "Microsoft.Extensions.Logging": "10.0.0", - "Serilog": "4.2.0" - } - }, - "Serilog.Formatting.Compact": { - "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "Serilog.Settings.Configuration": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "LNq+ibS1sbhTqPV1FIE69/9AJJbfaOhnaqkzcjFy95o+4U+STsta9mi97f1smgXsWYKICDeGUf8xUGzd/52/uA==", - "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "10.0.0", - "Microsoft.Extensions.DependencyModel": "10.0.0", - "Serilog": "4.3.0" - } - }, - "Serilog.Sinks.Debug": { - "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "SQLitePCLRaw.bundle_e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "DC4nA7yWnf4UZdgJDF+9Mus4/cb0Y3Sfgi3gDnAoKNAIBwzkskNAbNbyu+u4atT0ruVlZNJfwZmwiEwE5oz9LQ==", - "dependencies": { - "SQLitePCLRaw.lib.e_sqlite3": "2.1.11", - "SQLitePCLRaw.provider.e_sqlite3": "2.1.11" - } - }, - "SQLitePCLRaw.core": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "PK0GLFkfhZzLQeR3PJf71FmhtHox+U3vcY6ZtswoMjrefkB9k6ErNJEnwXqc5KgXDSjige2XXrezqS39gkpQKA==" - }, - "SQLitePCLRaw.lib.e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "Ev2ytaXiOlWZ4b3R67GZBsemTINslLD1DCJr2xiacpn4tbapu0Q4dHEzSvZSMnVWeE5nlObU3VZN2p81q3XOYQ==" - }, - "SQLitePCLRaw.provider.e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "Y/0ZkR+r0Cg3DQFuCl1RBnv/tmxpIZRU3HUvelPw6MVaKHwYYR8YNvgs0vuNuXCMvlyJ+Fh88U1D4tah1tt6qw==", - "dependencies": { - "SQLitePCLRaw.core": "2.1.11" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "UPWqLSygJlFerRi9XNIuM0a1VC8gHUIufyP24xQ0sc+XimqUAEcjpOz9DhKpyDjH+5B/wO3RpC0KpkEeDj/ddg==" - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "TimeZoneConverter": { - "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "sFbY65N/5GdsHx7nkdHFHUG+5Ar4W0w6Aks7Y2X+Q4NOTw6XyX2Il7jm+4tPkc//4mA3nG0RdxI8gKgoJitdLw==" - }, - "werkr.api": { - "type": "Project", - "dependencies": { - "Grpc.AspNetCore": "[2.76.0, )", - "Microsoft.AspNetCore.Authentication.JwtBearer": "[10.0.5, )", - "Microsoft.AspNetCore.OpenApi": "[10.0.5, )", - "Microsoft.IdentityModel.JsonWebTokens": "[8.16.0, )", - "Serilog.AspNetCore": "[10.0.0, )", - "Serilog.Sinks.Console": "[6.1.1, )", - "Serilog.Sinks.File": "[7.0.0, )", - "Serilog.Sinks.OpenTelemetry": "[4.2.0, )", - "Werkr.Common": "[1.0.0, )", - "Werkr.Core": "[1.0.0, )", - "Werkr.Data": "[1.0.0, )", - "Werkr.ServiceDefaults": "[1.0.0, )" - } - }, - "werkr.common": { - "type": "Project", - "dependencies": { - "Google.Protobuf": "[3.34.1, )", - "Microsoft.AspNetCore.Authorization": "[10.0.5, )", - "Microsoft.Extensions.Configuration.Json": "[10.0.5, )", - "Microsoft.IdentityModel.Tokens": "[8.16.0, )", - "TimeZoneNames": "[7.0.0, )", - "Werkr.Common.Configuration": "[1.0.0, )" - } - }, - "werkr.common.configuration": { - "type": "Project" - }, - "werkr.core": { - "type": "Project", - "dependencies": { - "Grpc.Net.Client": "[2.76.0, )", - "MailKit": "[4.15.1, )", - "Microsoft.Extensions.Hosting.Abstractions": "[10.0.5, )", - "System.Security.Cryptography.ProtectedData": "[10.0.5, )", - "Werkr.Common": "[1.0.0, )", - "Werkr.Data": "[1.0.0, )" - } - }, - "werkr.data": { - "type": "Project", - "dependencies": { - "EFCore.NamingConventions": "[10.0.1, )", - "Microsoft.EntityFrameworkCore": "[10.0.5, )", - "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.5, )", - "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.1, )", - "Werkr.Common": "[1.0.0, )" - } - }, - "werkr.data.identity": { - "type": "Project", - "dependencies": { - "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.5, )", - "Microsoft.AspNetCore.Identity.UI": "[10.0.5, )", - "Werkr.Common": "[1.0.0, )", - "Werkr.Data": "[1.0.0, )" - } - }, - "werkr.servicedefaults": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Http.Resilience": "[10.4.0, )", - "Microsoft.Extensions.ServiceDiscovery": "[10.4.0, )", - "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.15.0, )", - "OpenTelemetry.Extensions.Hosting": "[1.15.0, )", - "OpenTelemetry.Instrumentation.AspNetCore": "[1.15.1, )", - "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.15.0-beta.1, )", - "OpenTelemetry.Instrumentation.GrpcNetClient": "[1.15.0-beta.1, )", - "OpenTelemetry.Instrumentation.Http": "[1.15.0, )", - "OpenTelemetry.Instrumentation.Runtime": "[1.15.0, )" - } - }, - "EFCore.NamingConventions": { - "type": "CentralTransitive", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "Xs5k8XfNKPkkQSkGmZkmDI1je0prLTdxse+s8PgTFZxyBrlrTLzTBUTVJtQKSsbvu4y+luAv8DdtO5SALJE++A==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "[10.0.1, 11.0.0)", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.1, 11.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1" - } - }, - "Google.Protobuf": { - "type": "CentralTransitive", - "requested": "[3.34.1, )", - "resolved": "3.34.1", - "contentHash": "212vdYxRuVopGE5bess6Jg5oXWyizA6hcLPTI7G+qA4PthQEvfeof3njT+7VSY5v/+O0P22xTydiP5fSJJpGEA==" - }, - "Grpc.AspNetCore": { - "type": "CentralTransitive", - "requested": "[2.76.0, )", - "resolved": "2.76.0", - "contentHash": "LyXMmpN2Ba0TE35SOLSKbGqIYtJuhc1UgiaGfoW1X8KJERV70QI5KGW+ckEY7MrXoFWN/uWo4B70siVhbDmCgQ==", - "dependencies": { - "Google.Protobuf": "3.31.1", - "Grpc.AspNetCore.Server.ClientFactory": "2.76.0", - "Grpc.Tools": "2.76.0" - } - }, - "Grpc.Net.Client": { - "type": "CentralTransitive", - "requested": "[2.76.0, )", - "resolved": "2.76.0", - "contentHash": "K1oldmqw2+Gn69nGRzZLhqSiUZwelX1GrBu/cUl9wNf1C0uB61vFS6JcxUUv9P8VoUJhFsmV44JA6lI2EUt4xw==", - "dependencies": { - "Grpc.Net.Common": "2.76.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.0" - } - }, - "Grpc.Net.ClientFactory": { - "type": "CentralTransitive", - "requested": "[2.76.0, )", - "resolved": "2.76.0", - "contentHash": "XI+kO69L9AV8B9N0UQOmH911r6MOEp9huHiavEsY56DJYuzJ9KAxNGy37dpV6CLbgCaN2uKmpOsZ9Pao6bmpVQ==", - "dependencies": { - "Grpc.Net.Client": "2.76.0", - "Microsoft.Extensions.Http": "8.0.0" - } - }, - "Grpc.Tools": { - "type": "CentralTransitive", - "requested": "[2.78.0, )", - "resolved": "2.78.0", - "contentHash": "6jPG2gHon+w2PczW8jjrCRnW/g9eEfCdd7aK6mDooptWtuPsV3ZxAwKKEx7LGEDVoT4c2SViRl8Yu3L1XiWIIg==" - }, - "MailKit": { - "type": "CentralTransitive", - "requested": "[4.15.1, )", - "resolved": "4.15.1", - "contentHash": "4mLbqTbH3ctd0NlukHjVQbU3ZnNDuCtB6ttNZDLPZLWMA2Dr31rh/eCSTqOwDojUX8zfDOVaxstMgJTE9PwZNA==", - "dependencies": { - "MimeKit": "4.15.1" - } - }, - "Microsoft.AspNetCore.Authentication.JwtBearer": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "fZzXogChrwQ/SfifQJgeW7AtR8hUv5+LH9oLWjm5OqfnVt3N8MwcMHHMdawvqqdjP79lIZgetnSpj77BLsSI1g==", - "dependencies": { - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.0.1" - } - }, - "Microsoft.AspNetCore.Authorization": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "NbFi4wN6fUvZK4AKmixpfx0IvqtVimKEn8ZX28LkzZBVo09YnLbyRrJ1001IVQDLbV+aYpS/cLhVJu5JD0rY5A==", - "dependencies": { - "Microsoft.AspNetCore.Metadata": "10.0.5", - "Microsoft.Extensions.Diagnostics": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "oo1uauTwgcnhYgituZ2nI3wJ8XN9z76ggu2zkOJu1BCfOOsqr+g08Kr4MOiMuXEhwySkpIV+MVoC25hC1288NA==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Relational": "10.0.5", - "Microsoft.Extensions.Identity.Stores": "10.0.5" - } - }, - "Microsoft.AspNetCore.Identity.UI": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "qzYhpJ4Uxng18hmuKqwqydZaPzItrv9WOwNULJ2ka952TZKlOQkERTSkVO8G/19WiRtoznZatrcRyOvppYRGFA==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Embedded": "10.0.5", - "Microsoft.Extensions.Identity.Stores": "10.0.5" - } - }, - "Microsoft.AspNetCore.OpenApi": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "vTcxIfOPyfFbYk1g8YcXJfkMnlEWVkSnnjxcZLy60zgwiHMRf2SnZR+9E4HlpwKxgE3yfKMOti8J6WfKuKsw6w==", - "dependencies": { - "Microsoft.OpenApi": "2.0.0" - } - }, - "Microsoft.Data.Sqlite.Core": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "jFYXnh7s0RShCw6Vkf+ReGCw+mVi7ISg1YaEzYCJcXnUifmbW+aqvCsRJuSRj2ZuQ+oqetpjxlZtbpMmk5FKqQ==", - "dependencies": { - "SQLitePCLRaw.core": "2.1.11" - } - }, - "Microsoft.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "9tNBmK3EpYVGRQLiqP+bqK2m+TD0Gv//4vCzR7ZOgl4FWzCFyOpYdIVka13M4kcBdPdSJcs3wbHr3rmzOqbIMA==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "10.0.5", - "Microsoft.EntityFrameworkCore.Analyzers": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5" - } - }, - "Microsoft.EntityFrameworkCore.Sqlite": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "lxeRviglTkkmzYJVJ600yb6gJjnf5za9v7uH+0byuSXTGv7U8cT6hz7qRTmiGSOfLcl86QFdy2BBKaUFd6NQug==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Sqlite.Core": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyModel": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "SQLitePCLRaw.bundle_e_sqlite3": "2.1.11", - "SQLitePCLRaw.core": "2.1.11" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "P09QpTHjqHmCLQOTC+WyLkoRNxek4NIvfWt+TnU0etoDUSRxcltyd6+j/ouRbMdLR0j44GqGO+lhI2M4fAHG4g==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.Json": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "brBM/WP0YAUYh2+QqSYVdK8eQHYQTtTEUJXJ+84Zkdo2buGLja9VSrMIhgoeBUU7JBmcskAib8Lb/N83bvxgYQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.5", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "+Wb7KAMVZTomwJkQrjuPTe5KBzGod7N8XeG+ScxRlkPOB4sZLG4ccVwjV4Phk5BCJt7uIMnGHVoN6ZMVploX+g==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Http": { - "type": "CentralTransitive", - "requested": "[10.0.4, )", - "resolved": "10.0.4", - "contentHash": "QRbs+A+WfiGTnV9KFNfWlF+My5euQNZnsvdVMulwRN6C/tEPaF+ZlQfedHoNvFHKLwjQMmqwm4z+TSO9eLvRQw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.Diagnostics": "10.0.4", - "Microsoft.Extensions.Logging": "10.0.4", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4" - } - }, - "Microsoft.Extensions.Http.Resilience": { - "type": "CentralTransitive", - "requested": "[10.4.0, )", - "resolved": "10.4.0", - "contentHash": "HbkUsPUC7vLy2TaDbdA9aooW64n9yX4sUppRuiJ1cOzzU1FUW+MVEotm6kYVq6AuUI9xwFSBhRFzA03blmk3VA==", - "dependencies": { - "Microsoft.Extensions.Http.Diagnostics": "10.4.0", - "Microsoft.Extensions.ObjectPool": "10.0.4", - "Microsoft.Extensions.Resilience": "10.4.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "9HOdqlDtPptVcmKAjsQ/Nr5Rxfq6FMYLdhvZh1lVmeKR738qeYecQD7+ldooXf+u2KzzR1kafSphWngIM3C6ug==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.ServiceDiscovery": { - "type": "CentralTransitive", - "requested": "[10.4.0, )", - "resolved": "10.4.0", - "contentHash": "RznZAH6L4RNvroECT5JpqfFQJjHTn+8N7+ThSgYutbshkuymFeL/uBIZt1CM8LOdpPPhn4//a5fLUah9/k7ayQ==", - "dependencies": { - "Microsoft.Extensions.Http": "10.0.4", - "Microsoft.Extensions.ServiceDiscovery.Abstractions": "10.4.0" - } - }, - "Microsoft.IdentityModel.JsonWebTokens": { - "type": "CentralTransitive", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "prBU72cIP4V8E9fhN+o/YdskTsLeIcnKPbhZf0X6mD7fdxoZqnS/NdEkSr+9Zp+2q7OZBOMfNBKGbTbhXODO4w==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "8.16.0" - } - }, - "Microsoft.IdentityModel.Tokens": { - "type": "CentralTransitive", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "rtViGJcGsN7WcfUNErwNeQgjuU5cJNl6FDQsfi9TncwO+Epzn0FTfBsg3YuFW1Q0Ch/KPxaVdjLw3/+5Z5ceFQ==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.IdentityModel.Logging": "8.16.0" - } - }, - "Npgsql.EntityFrameworkCore.PostgreSQL": { - "type": "CentralTransitive", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "P6EwH0Q4xkaA264iNZDqCPhWt8pscfUGxXazDQg4noBfqjoOlk4hKWfvBjF9ZX3R/9JybRmmJfmxr2iBMj0EpA==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", - "Npgsql": "10.0.2" - } - }, - "OpenTelemetry.Exporter.OpenTelemetryProtocol": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "VH8ANc/js9IRvfYt0Q2UaAxNCOWm+IU+vWrtoH7pfx4oWPVdISUt+9uWfBCFMWZg5WzQip5dhslyDjeyZXXfSQ==", - "dependencies": { - "OpenTelemetry": "1.15.0" - } - }, - "OpenTelemetry.Extensions.Hosting": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "RixjKyB1pbYGhWdvPto4KJs+exdQknJsnjUO9WszdLles5Vcd0EYzxPNJdwmLjYfP+Jfbr4B5nktM4ZgeHSWtg==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", - "OpenTelemetry": "1.15.0" - } - }, - "OpenTelemetry.Instrumentation.AspNetCore": { - "type": "CentralTransitive", - "requested": "[1.15.1, )", - "resolved": "1.15.1", - "contentHash": "wXaZTu6LHY8xcbRd6ClcrtjHqGVoGYCcArXEZA3iUjUcYSVYwDGyPU0PdkwTfylxv8JeCCVDQhVb0fT7xBJjGA==", - "dependencies": { - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[1.15.0-beta.1, )", - "resolved": "1.15.0-beta.1", - "contentHash": "N01GzP+r8lpSBiqjRX0/WjSp17r+zk6dKvGKthiASyFzF44lrJo8cA3ihXnw3p4Rnqg1mVjOYy19R6iJ84NTpg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.GrpcNetClient": { - "type": "CentralTransitive", - "requested": "[1.15.0-beta.1, )", - "resolved": "1.15.0-beta.1", - "contentHash": "SBas5+C4kGUqoy8OPpQis+QIgJ7/aaJl4H3oLzHCJnZLCb8TXZmQL2/r753RXXJUH8oIeLIzdW+EXgujSy+cpQ==", - "dependencies": { - "OpenTelemetry": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.Http": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "uToc7bUp8IEdb0ny9mKsL6FrrYelINPzxxiSShJgOf4XmQc4Azww6S5RjRj24YhsOn2a1MABOrxfVTZXtDk4Eg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.Runtime": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "OOvpqR/j2Pb6+tWhHNODIbSJ53Or/MDtTiXEyrsWI02K2lLAgvBFcxUOrHggS/8015cYR3AdSaXv6NZrkz5yQA==", - "dependencies": { - "OpenTelemetry.Api": "[1.15.0, 2.0.0)" - } - }, - "Serilog.AspNetCore": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "a/cNa1mY4On1oJlfGG1wAvxjp5g7OEzk/Jf/nm7NF9cWoE7KlZw1GldrifUBWm9oKibHkR7Lg/l5jy3y7ACR8w==", - "dependencies": { - "Serilog": "4.3.0", - "Serilog.Extensions.Hosting": "10.0.0", - "Serilog.Formatting.Compact": "3.0.0", - "Serilog.Settings.Configuration": "10.0.0", - "Serilog.Sinks.Console": "6.1.1", - "Serilog.Sinks.Debug": "3.0.0", - "Serilog.Sinks.File": "7.0.0" - } - }, - "Serilog.Sinks.Console": { - "type": "CentralTransitive", - "requested": "[6.1.1, )", - "resolved": "6.1.1", - "contentHash": "8jbqgjUyZlfCuSTaJk6lOca465OndqOz3KZP6Cryt/IqZYybyBu7GP0fE/AXBzrrQB3EBmQntBFAvMVz1COvAA==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "Serilog.Sinks.File": { - "type": "CentralTransitive", - "requested": "[7.0.0, )", - "resolved": "7.0.0", - "contentHash": "fKL7mXv7qaiNBUC71ssvn/dU0k9t0o45+qm2XgKAlSt19xF+ijjxyA3R6HmCgfKEKwfcfkwWjayuQtRueZFkYw==", - "dependencies": { - "Serilog": "4.2.0" - } - }, - "Serilog.Sinks.OpenTelemetry": { - "type": "CentralTransitive", - "requested": "[4.2.0, )", - "resolved": "4.2.0", - "contentHash": "PzMCyE5G19tjr5IZEi5qg+4UU5QrxBEoBEMu/hhYybTrGKXqUDiSGWKZNUDBgelaVKqLADlsmlJVyKce5SyPrg==", - "dependencies": { - "Google.Protobuf": "3.30.1", - "Grpc.Net.Client": "2.70.0", - "Serilog": "4.2.0" - } - }, - "System.IdentityModel.Tokens.Jwt": { - "type": "CentralTransitive", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", - "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", - "Microsoft.IdentityModel.Tokens": "8.16.0" - } - }, - "System.Security.Cryptography.ProtectedData": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "kxR4O/8o32eNN3m4qbLe3UifYqeyEpallCyVAsLvL5ZFJVyT3JCb+9du/WHfC09VyJh1Q+p/Gd4+AwM7Rz4acg==" - }, - "TimeZoneNames": { - "type": "CentralTransitive", - "requested": "[7.0.0, )", - "resolved": "7.0.0", - "contentHash": "zc1sIJZMDH7pPO1Gqte9yjMEFSILShTRNuxVxnNdiZP4NGGSi3ZGe2OSrW2phjzM/QKe3pKOwUXfQmJMjDBOKQ==", - "dependencies": { - "TimeZoneConverter": "7.0.0" - } - } - } - } +{ + "version": 2, + "dependencies": { + "net10.0": { + "MSTest": { + "type": "Direct", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "2bk47yg7HcHRyf6Zf0XgCZicTVTQj4D5lonYTO7lWMxCQB+x66VrQNc2dADBfzthKXfHaA37m8i+VV5h6SbWiA==", + "dependencies": { + "MSTest.TestAdapter": "4.1.0", + "MSTest.TestFramework": "4.1.0", + "Microsoft.NET.Test.Sdk": "18.0.1", + "Microsoft.Testing.Extensions.CodeCoverage": "18.4.1", + "Microsoft.Testing.Extensions.TrxReport": "2.1.0" + } + }, + "BouncyCastle.Cryptography": { + "type": "Transitive", + "resolved": "2.6.2", + "contentHash": "7oWOcvnntmMKNzDLsdxAYqApt+AjpRpP2CShjMfIa3umZ42UQMvH0tl1qAliYPNYO6vTdcGMqnRrCPmsfzTI1w==" + }, + "Grpc.AspNetCore.Server": { + "type": "Transitive", + "resolved": "2.76.0", + "contentHash": "diSC/ZeNdSdxHdYSOpYwuSBBDYpuNVtJQFJfiBB0WrYOQ4lVMmdxuUZJcViahQyo8pCvS3Mueo5lqFxwwMF/iw==", + "dependencies": { + "Grpc.Net.Common": "2.76.0" + } + }, + "Grpc.AspNetCore.Server.ClientFactory": { + "type": "Transitive", + "resolved": "2.76.0", + "contentHash": "y5KGO1GO0N2L/hCCMR05mmoK8j+v8rKvZ+9nothAxKx2Tf2CwV8f4TM5K0GkKfDsp4vrc4lm90MU6E+DeN7YIw==", + "dependencies": { + "Grpc.AspNetCore.Server": "2.76.0", + "Grpc.Net.ClientFactory": "2.76.0" + } + }, + "Grpc.Core.Api": { + "type": "Transitive", + "resolved": "2.76.0", + "contentHash": "cSxC2tdnFdXXuBgIn1pjc4YBx7LXTCp4M0qn+SMBS35VWZY+cEQYLWTBDDhdBH1HzU7BV+ncVZlniGQHMpRJKQ==" + }, + "Grpc.Net.Common": { + "type": "Transitive", + "resolved": "2.76.0", + "contentHash": "bZpiMVYgvpB44/wBh1RotrkqC7bg2FOasLri2GhR3hMKyzsiTxCoDE49YjPrJeFc4RW0wS8u+EInI09sjxVFRA==", + "dependencies": { + "Grpc.Core.Api": "2.76.0" + } + }, + "Microsoft.ApplicationInsights": { + "type": "Transitive", + "resolved": "2.23.0", + "contentHash": "nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw==" + }, + "Microsoft.AspNetCore.Cryptography.Internal": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "kFUpNRYySfqNLuQKGMKZ2mK8b86R1zizlc9QB6R/Ess0rSkrA8pRNCMSFm+DqUnNfm5G3FWjsYIJOKYyhkHeig==" + }, + "Microsoft.AspNetCore.Cryptography.KeyDerivation": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "NkWUZYkL6wavYY2wMZgnODzsyTOZhcRxP/DJvZlBbWEJViukdyuIqtdTzltODyjsc3MjEvxmbPDDk2KgGv6tMA==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.Internal": "10.0.5" + } + }, + "Microsoft.AspNetCore.Metadata": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "nXVB1K4RzyhDHKYWLiq3+aJopJZKO5ojFqHV9PZ74fe4VWM/8itoouqsd2KIqSooIwQ13UDNlPQfN2rWr7hc2A==" + }, + "Microsoft.CodeCoverage": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "O+utSr97NAJowIQT/OVp3Lh9QgW/wALVTP4RG1m2AfFP4IyJmJz0ZBmFJUsRQiAPgq6IRC0t8AAzsiPIsaUDEA==" + }, + "Microsoft.DiaSymReader": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "QcZrCETsBJqy/vQpFtJc+jSXQ0K5sucQ6NUFbTNVHD4vfZZOwjZ/3sBzczkC4DityhD3AVO/+K/+9ioLs1AgRA==" + }, + "Microsoft.EntityFrameworkCore.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "32c58Rnm47Qvhimawf67KO9PytgPz3QoWye7Abapt0Yocw/JnzMiSNj/pRoIKyn8Jxypkv86zxKD4Q/zNTc0Ag==" + }, + "Microsoft.EntityFrameworkCore.Analyzers": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "ipC4u1VojgEfoIZhtbS2Sx5IluJTP/Jf1hz3yGsxGBgSukYY/CquI6rAjxn5H58CZgVn36qcuPPtNMwZ0AUzMg==" + }, + "Microsoft.EntityFrameworkCore.Relational": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "uxmFjZEAB/KbsgWFSS4lLqkEHCfXxB2x0UcbiO4e5fCRpFFeTMSx/me6009nYJLu5IKlDwO1POh++P6RilFTDw==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore.Sqlite.Core": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "rVH43bcUyZiMn0SnCpVnvFpl4PFxT4GwmuVVLcT4JL0NtzuHY9ymKV+Llb5cjuJ+6+gEl4eixy2rE8nxOPcBSA==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "10.0.5", + "Microsoft.EntityFrameworkCore.Relational": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyModel": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "bovnONzrr/JIc+w343i857rJEb7cQH9UzEjbV5n67agWBEYICGQb8xiqYz5+GoFXp6mKEKLwYCQGttMU1p5yXQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.4", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.4", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" + } + }, + "Microsoft.Extensions.Caching.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "k/QDdQ94/0Shi0KfU+e12m73jfQo+3JpErTtgpZfsCIqkvdEEO0XIx6R+iTbN55rNPaNhOqNY4/sB+jZ8XxVPw==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "jUEXmkBUPdOS/MP9areK/sbKhdklq9+tEhvwfxGalZVnmyLUO5rrheNNutUBtvbZ7J8ECkG7/r2KXi/IFC06cA==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Compliance.Abstractions": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "4WkknDbVrHNf+S6fwSt1OAXlGJ/G/QrtJlqx4aNzOLmeT3GRyxpGLZn+Q3UV+RMRAF6FfsijEZBg2ZAW8bTAkg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", + "Microsoft.Extensions.ObjectPool": "10.0.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "8Rx5sqg04FttxrumyG6bmoRuFRgYzK6IVwF1i0/o0cXfKBdDeVpJejKHtJCMjyg9E/DNMVqpqOGe/tCT5gYvVA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "99Z4rjyXopb1MIazDSPcvwYCUdYNO01Cf1GUs2WUjIFAbkGmwzj2vPa2k+3pheJRV+YgNd2QqRKHAri0oBAU4Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "OhTr0O79dP49734lLTqVveivVX9sDXxbI/8vjELAZTHXqoN90mdpgTAgwicJED42iaHMCcZcK6Bj+8wNyBikaw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Physical": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "v1SVsowG6YE1YnHVGmLWz57YTRCQRx9pH5ebIESXfm5isI9gA3QaMyg/oMTzPpXYZwSAVDzYItGJKfmV+pqXkQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "iVMtq9eRvzyhx8949EGT0OCYJfXi737SbRVzWXE5GrOgGj5AaZ9eUuxA/BSUfmOMALKn/g8KfFaNQw0eiB3lyA==" + }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "ksmUG2SFTcXzYdyoLOdeSM/qYLRGN6qbbSzYVkwMK9xsctfR1hYkUayeOpFCMd7L+QSlYX72mK9wxwdgQxyS4g==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.4" + } + }, + "Microsoft.Extensions.DependencyModel": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "xA4kkL+QS6KCAOKz/O0oquHs44Ob8J7zpBCNt3wjkBWDg5aCqfwG8rWWLsg5V86AM0sB849g9JjPjIdksTCIKg==" + }, + "Microsoft.Extensions.Diagnostics": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "vAJHd4yOpmKoK+jBuYV7a3y+Ab9U4ARCc29b6qvMy276RgJFw9LFs0DdsPqOL3ahwzyrX7tM+i4cCxU/RX0qAg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.5" + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "/nYGrpa9/0BZofrVpBbbj+Ns8ZesiPE0V/KxsuHgDgHQopIzN54nRaQGSuvPw16/kI9sW1Zox5yyAPqvf0Jz6A==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "1/hQmONMWxRTKXuN0pQShQN9QsqIRTS1G4fdmKW0O9phuVZjyzIROQD9Fbfwyn2t+yvP8SzjatGAPX4jDRfgHg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4" + } + }, + "Microsoft.Extensions.Features": { + "type": "Transitive", + "resolved": "10.0.4", + "contentHash": "7to+nkZO+g/GiGQOBzAcrr8HcG8dXETI/hg58fJju0jPO9p/GvNLAis8kMPTBdsjfeTfslBrgFX9Yx1KRnKDww==" + }, + "Microsoft.Extensions.FileProviders.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "nCBmCx0Xemlu65ZiWMcXbvfvtznKxf4/YYKF9R28QkqdI9lTikedGqzJ28/xmdGGsxUnsP5/3TQGpiPwVjK0dA==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.FileProviders.Embedded": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "DQzkbLFNfwmjxErAnWyZTTyBd4cMo6vmGteM4Ayedhk5Pccm2VuKoeKcOZjJG1T+dYK6lMCNk2L7Ftl7dLhgqg==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.FileProviders.Physical": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "dMu5kUPSfol1Rqhmr6nWPSmbFjDe9w6bkoKithG17bWTZA0UyKirTatM5mqYUN3mGpNA0MorlusIoVTh6J7o5g==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.FileSystemGlobbing": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.FileSystemGlobbing": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "mOE3ARusNQR0a5x8YOcnUbfyyXGqoAWQtEc7qFOfNJgruDWQLo39Re+3/Lzj5pLPFuFYj8hN4dgKzaSQDKiOCw==" + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "ybx2QcCWROCnUCbSj/IyHXn1c58brjjHzTTbueKgBl/qHsWk69mu25mjQ3oaMsO1I0+EcS6AhVuhIopL2q3IDw==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.4", + "Microsoft.Extensions.Telemetry": "10.4.0" + } + }, + "Microsoft.Extensions.Identity.Core": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "ew2Xob+HFvJvM7BelIrUIbGeVMO2q1A6gsZEsI8N/v0ddSv7qbvvY68mH16XzvlsqydqD3ct5ioQHsiEUDSNkg==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.KeyDerivation": "10.0.5", + "Microsoft.Extensions.Diagnostics": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Identity.Stores": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "St8g+4xGLUhfSzTlHSLtCv7kh/tppvFab5x0kFIOsWryf1ffK2Ux+JIg01v5Yf27g2iQLCFEmW5hG5DDZL1HLA==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.5", + "Microsoft.Extensions.Identity.Core": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "+XTMKQyDWg4ODoNHU/BN3BaI1jhGO7VCS+BnzT/4IauiG6y2iPAte7MyD7rHKS+hNP0TkFkjrae8DFjDUxtcxg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Logging.Configuration": { + "type": "Transitive", + "resolved": "10.0.4", + "contentHash": "XPXoOpUnWEh0pV7Vl2DK2wj47y73Krhrve5OkPrvGIWdZ4U2r47WO8hEdv+wKn65Kh4pmDdiWm7Ibo5pZX+vig==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.4", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", + "Microsoft.Extensions.Configuration.Binder": "10.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", + "Microsoft.Extensions.Logging": "10.0.4", + "Microsoft.Extensions.Logging.Abstractions": "10.0.4", + "Microsoft.Extensions.Options": "10.0.4", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" + } + }, + "Microsoft.Extensions.ObjectPool": { + "type": "Transitive", + "resolved": "10.0.4", + "contentHash": "2pufIFOgNl/yWTOoIC9XgBnO9VxgfAjdRCnVwpE2+ICfcroGnjuEAGzJ5lTdZeAe0HvA31vMBWXtcmGB7TOq3g==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "MDaQMdUplw0AIRhWWmbLA7yQEXaLIHb+9CTroTiNS8OlI0LMXS4LCxtopqauiqGCWlRgJ+xyraVD8t6veRAFbw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "BB9uUW3+6Rxu1R97OB1H/13lUF8P2+H1+eDhpZlK30kDh/6E4EKHBUqTp+ilXQmZLzsRErxON8aBSR6WpUKJdg==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.Binder": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "/HUHJ0tw/LQvD0DZrz50eQy/3z7PfX7WWEaXnjKTV9/TNdcgFlNTZGo49QhS7PTmhDqMyHRMqAXSBxLh0vso4g==" + }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "41CCbJJPsDWU6NsmKfANHkfT/+KCBlZZqQ1eBoQhhW0xqGCiWmUlMdi2BoaM/GcwKHX5WiQL/IESROmgk0Owfw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics": "10.0.4", + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.4.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4", + "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.ServiceDiscovery.Abstractions": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "HkBb7cdi27tkQiQw1anQFbXe+A3pjRwDKgVbd/DD9fMAO2X9abK0FEyM/tNVXjW3lwOWl2tF+Xij/DqI6i+JTg==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", + "Microsoft.Extensions.Configuration.Binder": "10.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", + "Microsoft.Extensions.Features": "10.0.4", + "Microsoft.Extensions.Logging.Abstractions": "10.0.4", + "Microsoft.Extensions.Options": "10.0.4", + "Microsoft.Extensions.Primitives": "10.0.4" + } + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "AbHleTzdpGPjA6RpOjKVHEYx7SoBRnJ2bwAbbPa3aGB7HiVwBmeTJhBGhtIBiuIW0VpKDS8x+bV5iWqpBRIf4w==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.4.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.4.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.4", + "Microsoft.Extensions.ObjectPool": "10.0.4", + "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0" + } + }, + "Microsoft.Extensions.Telemetry.Abstractions": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "3b2uVa4voJfLLg39BPCKQS0ZgnpEZFkKf7YmnMVlM5FQJYBPOuePIQdnEK1/Oxd+w3GscxGYuE7IMOXDwixZtQ==", + "dependencies": { + "Microsoft.Extensions.Compliance.Abstractions": "10.4.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.4", + "Microsoft.Extensions.ObjectPool": "10.0.4", + "Microsoft.Extensions.Options": "10.0.4" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.17.0", + "contentHash": "6NrxQGcZg6IunkN8K2F0UVMavNpfCjbjjjON7PYcL8FwI8aULKUreiHsRX/yaA8j3XsTJnQKUYpoQk5gBjULZw==" + }, + "Microsoft.IdentityModel.Logging": { + "type": "Transitive", + "resolved": "8.17.0", + "contentHash": "w1vjfri0BWqW7RkSZY3ZsqekNfIJJg5BQSFs2j+a+pCXOVrkezmJcn74pT3djwjXJh71577C6wJQgNc2UPz30w==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.17.0" + } + }, + "Microsoft.IdentityModel.Protocols": { + "type": "Transitive", + "resolved": "8.0.1", + "contentHash": "uA2vpKqU3I2mBBEaeJAWPTjT9v1TZrGWKdgK6G5qJd03CLx83kdiqO9cmiK8/n1erkHzFBwU/RphP83aAe3i3g==", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "8.0.1" + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect": { + "type": "Transitive", + "resolved": "8.0.1", + "contentHash": "AQDbfpL+yzuuGhO/mQhKNsp44pm5Jv8/BI4KiFXR7beVGZoSH35zMV3PrmcfvSTsyI6qrcR898NzUauD6SRigg==", + "dependencies": { + "Microsoft.IdentityModel.Protocols": "8.0.1", + "System.IdentityModel.Tokens.Jwt": "8.0.1" + } + }, + "Microsoft.NET.Test.Sdk": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "WNpu6vI2rA0pXY4r7NKxCN16XRWl5uHu6qjuyVLoDo6oYEggIQefrMjkRuibQHm/NslIUNCcKftvoWAN80MSAg==", + "dependencies": { + "Microsoft.CodeCoverage": "18.0.1", + "Microsoft.TestPlatform.TestHost": "18.0.1" + } + }, + "Microsoft.OpenApi": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "GGYLfzV/G/ct80OZ45JxnWP7NvMX1BCugn/lX7TH5o0lcVaviavsLMTxmFV2AybXWjbi3h6FF1vgZiTK6PXndw==" + }, + "Microsoft.Testing.Extensions.CodeCoverage": { + "type": "Transitive", + "resolved": "18.4.1", + "contentHash": "l1VZM9dg9s76L5D288ipAT4HRYDJ6Vxh8wX20gfS9VnpueedRfN4/aGNn4oA1g6pwq2WSM3Ci7IoSSGPiqu+WQ==", + "dependencies": { + "Microsoft.DiaSymReader": "2.0.0", + "Microsoft.Extensions.DependencyModel": "8.0.2", + "Microsoft.Testing.Platform": "2.0.2" + } + }, + "Microsoft.Testing.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "5TwgTx2u7k9Al/xbZ18QXq4Hdy2xewkVTI6K3sk+jY2ykqUkIKNuj7rFu3GOV5KnEUkevhw6eZcyZs77STHJIA==", + "dependencies": { + "Microsoft.ApplicationInsights": "2.23.0", + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Extensions.TrxReport": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "cXmP225WcMLLOSrW8xekaNhfzdBwXX3cbXbE5qSzmLbK0KZe3z8rAObKj70FWiPPPzm2W22x0ZW93gsmAfK6Mg==", + "dependencies": { + "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Extensions.TrxReport.Abstractions": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "D8xmIJYQFJ6D49Rx5/vPrkZZxb338Jkew+eSqZLBfBiWKw4QZKy3i1BOXiLfz0lOmaNErwDz/YWRojCdNl+B9Q==", + "dependencies": { + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Extensions.VSTestBridge": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "bNRIEA2YoGr+Y+7LHdA7i1U80+7BAdf4K4Qh4Kx6eKkoBK/NV7QpoMg+GWPP0/eqAFzuUmUOIPVZ87Oo0Vyxmw==", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "18.0.1", + "Microsoft.Testing.Extensions.Telemetry": "2.1.0", + "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Platform": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "aHkjNTGIA+Zbdw6RJgSFrbDrCjO0CgqpElqYcvkRSeUhBv2bKarnvU3ep786U7UqrPlArT/B7VmImRibJD0Zrg==" + }, + "Microsoft.Testing.Platform.MSBuild": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "UpfPebXQtHGrWz21+YLHmJSm+5zsuPE9U9pfdCtoB+67g75fDmWlNgpkH2ZmdVhSwkjNIed9Icg8Iu63z2ei5Q==", + "dependencies": { + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.TestPlatform.ObjectModel": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "qT/mwMcLF9BieRkzOBPL2qCopl8hQu6A1P7JWAoj/FMu5i9vds/7cjbJ/LLtaiwWevWLAeD5v5wjQJ/l6jvhWQ==" + }, + "Microsoft.TestPlatform.TestHost": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "uDJKAEjFTaa2wHdWlfo6ektyoh+WD4/Eesrwb4FpBFKsLGehhACVnwwTI4qD3FrIlIEPlxdXg3SyrYRIcO+RRQ==", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "18.0.1", + "Newtonsoft.Json": "13.0.3" + } + }, + "MimeKit": { + "type": "Transitive", + "resolved": "4.15.1", + "contentHash": "cxCcQhD0zhboFoG136jJuJtQjNRDJ+BxBm3f2vWn+53bff/CRo+K1mAkWjsW4Wuyy5O22F40MdMG2nRzQu1cJw==", + "dependencies": { + "BouncyCastle.Cryptography": "2.6.2", + "System.Security.Cryptography.Pkcs": "10.0.0" + } + }, + "MSTest.Analyzers": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "4ElL/aqomiUInr090VN4udqz46AuszXLrifHkLrgj0zb7na8eAoyUQt3BwDLTcGd1bSkmk3SfD02rZtKU+ZiqQ==" + }, + "MSTest.TestAdapter": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "bRW1Hftwq0XbcVExcAbj4YAfSZDRAziL0mygDkPBvaUe2nSsWFQIatze5lHVjPFJMvSFgWnItku4pguIy5FowQ==", + "dependencies": { + "MSTest.TestFramework": "4.1.0", + "Microsoft.Testing.Extensions.VSTestBridge": "2.1.0", + "Microsoft.Testing.Platform.MSBuild": "2.1.0" + } + }, + "MSTest.TestFramework": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "BzpvsK+CRbk6khwY62h+7HfYzIxtJXyPv9tOI9T90cy5CVy+WI1JkN4ZaNL4Dobqb6dywSwabLTIbPZKpdrr+A==", + "dependencies": { + "MSTest.Analyzers": "4.1.0" + } + }, + "Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" + }, + "Npgsql": { + "type": "Transitive", + "resolved": "10.0.2", + "contentHash": "q5RfBI+wywJSFUNDE1L4ZbHEHCFTblo8Uf6A6oe4feOUFYiUQXyAf9GBh5qEZpvJaHiEbpBPkQumjEhXCJxdrg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.0" + } + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.15.1", + "contentHash": "oJCqFTS/9S70TGPoamdGJRvw5hLOn6I/XC4X0npDErl2sHDlAg030ArJkIHIuLFCTO5GWqj1uDhsZNjO36xMxg==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.1" + } + }, + "OpenTelemetry.Api": { + "type": "Transitive", + "resolved": "1.15.1", + "contentHash": "+LJP0YBrysh4kPCRZhEyTUTcd+FFP0NPDvV4AzULBmiInGt6fp+RgBieRhUzVX/yyVEyshg3s82RWFYZJIkeGQ==" + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.15.1", + "contentHash": "aZedpOfXtHmVSWlebxJBeJg2DCdzds86mMowBTS6l+sjwV9LvQuZa0JDU9+S7FQvta4hnauxlCEYplbiDiYGeg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.15.1" + } + }, + "Polly.Core": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" + }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Polly.Core": "8.4.2" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2", + "System.Threading.RateLimiting": "8.0.0" + } + }, + "Serilog": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "+cDryFR0GRhsGOnZSKwaDzRRl4MupvJ42FhCE4zhQRVanX0Jpg6WuCBk59OVhVDPmab1bB+nRykAnykYELA9qQ==" + }, + "Serilog.Extensions.Hosting": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, + "Serilog.Formatting.Compact": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Serilog.Settings.Configuration": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "LNq+ibS1sbhTqPV1FIE69/9AJJbfaOhnaqkzcjFy95o+4U+STsta9mi97f1smgXsWYKICDeGUf8xUGzd/52/uA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "10.0.0", + "Microsoft.Extensions.DependencyModel": "10.0.0", + "Serilog": "4.3.0" + } + }, + "Serilog.Sinks.Debug": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "SQLitePCLRaw.bundle_e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "DC4nA7yWnf4UZdgJDF+9Mus4/cb0Y3Sfgi3gDnAoKNAIBwzkskNAbNbyu+u4atT0ruVlZNJfwZmwiEwE5oz9LQ==", + "dependencies": { + "SQLitePCLRaw.lib.e_sqlite3": "2.1.11", + "SQLitePCLRaw.provider.e_sqlite3": "2.1.11" + } + }, + "SQLitePCLRaw.core": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "PK0GLFkfhZzLQeR3PJf71FmhtHox+U3vcY6ZtswoMjrefkB9k6ErNJEnwXqc5KgXDSjige2XXrezqS39gkpQKA==" + }, + "SQLitePCLRaw.lib.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "Ev2ytaXiOlWZ4b3R67GZBsemTINslLD1DCJr2xiacpn4tbapu0Q4dHEzSvZSMnVWeE5nlObU3VZN2p81q3XOYQ==" + }, + "SQLitePCLRaw.provider.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "Y/0ZkR+r0Cg3DQFuCl1RBnv/tmxpIZRU3HUvelPw6MVaKHwYYR8YNvgs0vuNuXCMvlyJ+Fh88U1D4tah1tt6qw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.11" + } + }, + "System.Security.Cryptography.Pkcs": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "UPWqLSygJlFerRi9XNIuM0a1VC8gHUIufyP24xQ0sc+XimqUAEcjpOz9DhKpyDjH+5B/wO3RpC0KpkEeDj/ddg==" + }, + "System.Threading.RateLimiting": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" + }, + "TimeZoneConverter": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "sFbY65N/5GdsHx7nkdHFHUG+5Ar4W0w6Aks7Y2X+Q4NOTw6XyX2Il7jm+4tPkc//4mA3nG0RdxI8gKgoJitdLw==" + }, + "werkr.api": { + "type": "Project", + "dependencies": { + "Grpc.AspNetCore": "[2.76.0, )", + "Microsoft.AspNetCore.Authentication.JwtBearer": "[10.0.5, )", + "Microsoft.AspNetCore.OpenApi": "[10.0.5, )", + "Microsoft.IdentityModel.JsonWebTokens": "[8.17.0, )", + "Serilog.AspNetCore": "[10.0.0, )", + "Serilog.Sinks.Console": "[6.1.1, )", + "Serilog.Sinks.File": "[7.0.0, )", + "Serilog.Sinks.OpenTelemetry": "[4.2.0, )", + "Werkr.Common": "[1.0.0, )", + "Werkr.Core": "[1.0.0, )", + "Werkr.Data": "[1.0.0, )", + "Werkr.ServiceDefaults": "[1.0.0, )" + } + }, + "werkr.common": { + "type": "Project", + "dependencies": { + "Google.Protobuf": "[3.34.1, )", + "Microsoft.AspNetCore.Authorization": "[10.0.5, )", + "Microsoft.Extensions.Configuration.Json": "[10.0.5, )", + "Microsoft.IdentityModel.Tokens": "[8.17.0, )", + "TimeZoneNames": "[7.0.0, )", + "Werkr.Common.Configuration": "[1.0.0, )" + } + }, + "werkr.common.configuration": { + "type": "Project" + }, + "werkr.core": { + "type": "Project", + "dependencies": { + "Grpc.Net.Client": "[2.76.0, )", + "MailKit": "[4.15.1, )", + "Microsoft.Extensions.Hosting.Abstractions": "[10.0.5, )", + "System.Security.Cryptography.ProtectedData": "[10.0.5, )", + "Werkr.Common": "[1.0.0, )", + "Werkr.Data": "[1.0.0, )" + } + }, + "werkr.data": { + "type": "Project", + "dependencies": { + "EFCore.NamingConventions": "[10.0.1, )", + "Microsoft.EntityFrameworkCore": "[10.0.5, )", + "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.5, )", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.1, )", + "Werkr.Common": "[1.0.0, )" + } + }, + "werkr.data.identity": { + "type": "Project", + "dependencies": { + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.5, )", + "Microsoft.AspNetCore.Identity.UI": "[10.0.5, )", + "Werkr.Common": "[1.0.0, )", + "Werkr.Data": "[1.0.0, )" + } + }, + "werkr.servicedefaults": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Http.Resilience": "[10.4.0, )", + "Microsoft.Extensions.ServiceDiscovery": "[10.4.0, )", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.15.1, )", + "OpenTelemetry.Extensions.Hosting": "[1.15.1, )", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.15.1, )", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.15.0-beta.1, )", + "OpenTelemetry.Instrumentation.GrpcNetClient": "[1.15.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.15.0, )", + "OpenTelemetry.Instrumentation.Runtime": "[1.15.0, )" + } + }, + "EFCore.NamingConventions": { + "type": "CentralTransitive", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "Xs5k8XfNKPkkQSkGmZkmDI1je0prLTdxse+s8PgTFZxyBrlrTLzTBUTVJtQKSsbvu4y+luAv8DdtO5SALJE++A==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[10.0.1, 11.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.1, 11.0.0)", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1" + } + }, + "Google.Protobuf": { + "type": "CentralTransitive", + "requested": "[3.34.1, )", + "resolved": "3.34.1", + "contentHash": "212vdYxRuVopGE5bess6Jg5oXWyizA6hcLPTI7G+qA4PthQEvfeof3njT+7VSY5v/+O0P22xTydiP5fSJJpGEA==" + }, + "Grpc.AspNetCore": { + "type": "CentralTransitive", + "requested": "[2.76.0, )", + "resolved": "2.76.0", + "contentHash": "LyXMmpN2Ba0TE35SOLSKbGqIYtJuhc1UgiaGfoW1X8KJERV70QI5KGW+ckEY7MrXoFWN/uWo4B70siVhbDmCgQ==", + "dependencies": { + "Google.Protobuf": "3.31.1", + "Grpc.AspNetCore.Server.ClientFactory": "2.76.0", + "Grpc.Tools": "2.76.0" + } + }, + "Grpc.Net.Client": { + "type": "CentralTransitive", + "requested": "[2.76.0, )", + "resolved": "2.76.0", + "contentHash": "K1oldmqw2+Gn69nGRzZLhqSiUZwelX1GrBu/cUl9wNf1C0uB61vFS6JcxUUv9P8VoUJhFsmV44JA6lI2EUt4xw==", + "dependencies": { + "Grpc.Net.Common": "2.76.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0" + } + }, + "Grpc.Net.ClientFactory": { + "type": "CentralTransitive", + "requested": "[2.76.0, )", + "resolved": "2.76.0", + "contentHash": "XI+kO69L9AV8B9N0UQOmH911r6MOEp9huHiavEsY56DJYuzJ9KAxNGy37dpV6CLbgCaN2uKmpOsZ9Pao6bmpVQ==", + "dependencies": { + "Grpc.Net.Client": "2.76.0", + "Microsoft.Extensions.Http": "8.0.0" + } + }, + "Grpc.Tools": { + "type": "CentralTransitive", + "requested": "[2.78.0, )", + "resolved": "2.78.0", + "contentHash": "6jPG2gHon+w2PczW8jjrCRnW/g9eEfCdd7aK6mDooptWtuPsV3ZxAwKKEx7LGEDVoT4c2SViRl8Yu3L1XiWIIg==" + }, + "MailKit": { + "type": "CentralTransitive", + "requested": "[4.15.1, )", + "resolved": "4.15.1", + "contentHash": "4mLbqTbH3ctd0NlukHjVQbU3ZnNDuCtB6ttNZDLPZLWMA2Dr31rh/eCSTqOwDojUX8zfDOVaxstMgJTE9PwZNA==", + "dependencies": { + "MimeKit": "4.15.1" + } + }, + "Microsoft.AspNetCore.Authentication.JwtBearer": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "fZzXogChrwQ/SfifQJgeW7AtR8hUv5+LH9oLWjm5OqfnVt3N8MwcMHHMdawvqqdjP79lIZgetnSpj77BLsSI1g==", + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.0.1" + } + }, + "Microsoft.AspNetCore.Authorization": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "NbFi4wN6fUvZK4AKmixpfx0IvqtVimKEn8ZX28LkzZBVo09YnLbyRrJ1001IVQDLbV+aYpS/cLhVJu5JD0rY5A==", + "dependencies": { + "Microsoft.AspNetCore.Metadata": "10.0.5", + "Microsoft.Extensions.Diagnostics": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "oo1uauTwgcnhYgituZ2nI3wJ8XN9z76ggu2zkOJu1BCfOOsqr+g08Kr4MOiMuXEhwySkpIV+MVoC25hC1288NA==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.5", + "Microsoft.Extensions.Identity.Stores": "10.0.5" + } + }, + "Microsoft.AspNetCore.Identity.UI": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "qzYhpJ4Uxng18hmuKqwqydZaPzItrv9WOwNULJ2ka952TZKlOQkERTSkVO8G/19WiRtoznZatrcRyOvppYRGFA==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Embedded": "10.0.5", + "Microsoft.Extensions.Identity.Stores": "10.0.5" + } + }, + "Microsoft.AspNetCore.OpenApi": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "vTcxIfOPyfFbYk1g8YcXJfkMnlEWVkSnnjxcZLy60zgwiHMRf2SnZR+9E4HlpwKxgE3yfKMOti8J6WfKuKsw6w==", + "dependencies": { + "Microsoft.OpenApi": "2.0.0" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "jFYXnh7s0RShCw6Vkf+ReGCw+mVi7ISg1YaEzYCJcXnUifmbW+aqvCsRJuSRj2ZuQ+oqetpjxlZtbpMmk5FKqQ==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "9tNBmK3EpYVGRQLiqP+bqK2m+TD0Gv//4vCzR7ZOgl4FWzCFyOpYdIVka13M4kcBdPdSJcs3wbHr3rmzOqbIMA==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "10.0.5", + "Microsoft.EntityFrameworkCore.Analyzers": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore.Sqlite": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "lxeRviglTkkmzYJVJ600yb6gJjnf5za9v7uH+0byuSXTGv7U8cT6hz7qRTmiGSOfLcl86QFdy2BBKaUFd6NQug==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Sqlite.Core": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyModel": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.11", + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "P09QpTHjqHmCLQOTC+WyLkoRNxek4NIvfWt+TnU0etoDUSRxcltyd6+j/ouRbMdLR0j44GqGO+lhI2M4fAHG4g==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.Json": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "brBM/WP0YAUYh2+QqSYVdK8eQHYQTtTEUJXJ+84Zkdo2buGLja9VSrMIhgoeBUU7JBmcskAib8Lb/N83bvxgYQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.FileExtensions": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Hosting.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "+Wb7KAMVZTomwJkQrjuPTe5KBzGod7N8XeG+ScxRlkPOB4sZLG4ccVwjV4Phk5BCJt7uIMnGHVoN6ZMVploX+g==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Http": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "AiFvHYM8nP0wPC7bGPI3NHQlSYSLqjjT7DMJUuuxhd+7pz3O89iu2gdQfgACy5DxsXENiok5i1bMacJL7KR8jA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Diagnostics": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "CentralTransitive", + "requested": "[10.4.0, )", + "resolved": "10.4.0", + "contentHash": "HbkUsPUC7vLy2TaDbdA9aooW64n9yX4sUppRuiJ1cOzzU1FUW+MVEotm6kYVq6AuUI9xwFSBhRFzA03blmk3VA==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.4.0", + "Microsoft.Extensions.ObjectPool": "10.0.4", + "Microsoft.Extensions.Resilience": "10.4.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "9HOdqlDtPptVcmKAjsQ/Nr5Rxfq6FMYLdhvZh1lVmeKR738qeYecQD7+ldooXf+u2KzzR1kafSphWngIM3C6ug==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.ServiceDiscovery": { + "type": "CentralTransitive", + "requested": "[10.4.0, )", + "resolved": "10.4.0", + "contentHash": "RznZAH6L4RNvroECT5JpqfFQJjHTn+8N7+ThSgYutbshkuymFeL/uBIZt1CM8LOdpPPhn4//a5fLUah9/k7ayQ==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.4", + "Microsoft.Extensions.ServiceDiscovery.Abstractions": "10.4.0" + } + }, + "Microsoft.IdentityModel.JsonWebTokens": { + "type": "CentralTransitive", + "requested": "[8.17.0, )", + "resolved": "8.17.0", + "contentHash": "JbFZ3OVwtvqcqgBL0cIkhRYbIP7u9GIUYLOgbNqLWtBtZY8tGDpdGyXMzUVX0gVHq1ovuHsKZrkVv+ziHEnBHw==", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "8.17.0" + } + }, + "Microsoft.IdentityModel.Tokens": { + "type": "CentralTransitive", + "requested": "[8.17.0, )", + "resolved": "8.17.0", + "contentHash": "teaW35URIV2x78Tzk+dVJiC4M62/9mQoSEoDjDGoEZmcQa3H2rE+XQpm9Tmdo9KK1Lcrnve4zoyLavl69kCFGg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.17.0" + } + }, + "Npgsql.EntityFrameworkCore.PostgreSQL": { + "type": "CentralTransitive", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "P6EwH0Q4xkaA264iNZDqCPhWt8pscfUGxXazDQg4noBfqjoOlk4hKWfvBjF9ZX3R/9JybRmmJfmxr2iBMj0EpA==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", + "Npgsql": "10.0.2" + } + }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "400L64MwDd1s2bj4fFJblo3Hf5rXE3bhJUlOSBcLF6QP1Ln116Eqnwnesxhg2siDxOgHYLjcfCC8ByJTDEpNFQ==", + "dependencies": { + "OpenTelemetry": "1.15.1" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "/mN9I16P8miDSHogFC0OFyPzUvYXibk/rLFLXW3Io50IN+XEQx7E6dSyUdMRdY+NKmOCo/oS5ICXkjdoFrwq2A==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.15.1" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "wXaZTu6LHY8xcbRd6ClcrtjHqGVoGYCcArXEZA3iUjUcYSVYwDGyPU0PdkwTfylxv8JeCCVDQhVb0fT7xBJjGA==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.15.0-beta.1, )", + "resolved": "1.15.0-beta.1", + "contentHash": "N01GzP+r8lpSBiqjRX0/WjSp17r+zk6dKvGKthiASyFzF44lrJo8cA3ihXnw3p4Rnqg1mVjOYy19R6iJ84NTpg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.GrpcNetClient": { + "type": "CentralTransitive", + "requested": "[1.15.0-beta.1, )", + "resolved": "1.15.0-beta.1", + "contentHash": "SBas5+C4kGUqoy8OPpQis+QIgJ7/aaJl4H3oLzHCJnZLCb8TXZmQL2/r753RXXJUH8oIeLIzdW+EXgujSy+cpQ==", + "dependencies": { + "OpenTelemetry": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.15.0, )", + "resolved": "1.15.0", + "contentHash": "uToc7bUp8IEdb0ny9mKsL6FrrYelINPzxxiSShJgOf4XmQc4Azww6S5RjRj24YhsOn2a1MABOrxfVTZXtDk4Eg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.15.0, )", + "resolved": "1.15.0", + "contentHash": "OOvpqR/j2Pb6+tWhHNODIbSJ53Or/MDtTiXEyrsWI02K2lLAgvBFcxUOrHggS/8015cYR3AdSaXv6NZrkz5yQA==", + "dependencies": { + "OpenTelemetry.Api": "[1.15.0, 2.0.0)" + } + }, + "Serilog.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.0.0, )", + "resolved": "10.0.0", + "contentHash": "a/cNa1mY4On1oJlfGG1wAvxjp5g7OEzk/Jf/nm7NF9cWoE7KlZw1GldrifUBWm9oKibHkR7Lg/l5jy3y7ACR8w==", + "dependencies": { + "Serilog": "4.3.0", + "Serilog.Extensions.Hosting": "10.0.0", + "Serilog.Formatting.Compact": "3.0.0", + "Serilog.Settings.Configuration": "10.0.0", + "Serilog.Sinks.Console": "6.1.1", + "Serilog.Sinks.Debug": "3.0.0", + "Serilog.Sinks.File": "7.0.0" + } + }, + "Serilog.Sinks.Console": { + "type": "CentralTransitive", + "requested": "[6.1.1, )", + "resolved": "6.1.1", + "contentHash": "8jbqgjUyZlfCuSTaJk6lOca465OndqOz3KZP6Cryt/IqZYybyBu7GP0fE/AXBzrrQB3EBmQntBFAvMVz1COvAA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Serilog.Sinks.File": { + "type": "CentralTransitive", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "fKL7mXv7qaiNBUC71ssvn/dU0k9t0o45+qm2XgKAlSt19xF+ijjxyA3R6HmCgfKEKwfcfkwWjayuQtRueZFkYw==", + "dependencies": { + "Serilog": "4.2.0" + } + }, + "Serilog.Sinks.OpenTelemetry": { + "type": "CentralTransitive", + "requested": "[4.2.0, )", + "resolved": "4.2.0", + "contentHash": "PzMCyE5G19tjr5IZEi5qg+4UU5QrxBEoBEMu/hhYybTrGKXqUDiSGWKZNUDBgelaVKqLADlsmlJVyKce5SyPrg==", + "dependencies": { + "Google.Protobuf": "3.30.1", + "Grpc.Net.Client": "2.70.0", + "Serilog": "4.2.0" + } + }, + "System.IdentityModel.Tokens.Jwt": { + "type": "CentralTransitive", + "requested": "[8.16.0, )", + "resolved": "8.16.0", + "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Tokens": "8.16.0" + } + }, + "System.Security.Cryptography.ProtectedData": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "kxR4O/8o32eNN3m4qbLe3UifYqeyEpallCyVAsLvL5ZFJVyT3JCb+9du/WHfC09VyJh1Q+p/Gd4+AwM7Rz4acg==" + }, + "TimeZoneNames": { + "type": "CentralTransitive", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "zc1sIJZMDH7pPO1Gqte9yjMEFSILShTRNuxVxnNdiZP4NGGSi3ZGe2OSrW2phjzM/QKe3pKOwUXfQmJMjDBOKQ==", + "dependencies": { + "TimeZoneConverter": "7.0.0" + } + } + } + } } \ No newline at end of file diff --git a/src/Test/Werkr.Tests.Server/packages.lock.json b/src/Test/Werkr.Tests.Server/packages.lock.json index aa9d5a2..fea4585 100644 --- a/src/Test/Werkr.Tests.Server/packages.lock.json +++ b/src/Test/Werkr.Tests.Server/packages.lock.json @@ -1,1327 +1,1327 @@ -{ - "version": 2, - "dependencies": { - "net10.0": { - "bunit": { - "type": "Direct", - "requested": "[2.6.2, )", - "resolved": "2.6.2", - "contentHash": "Xx7EFwuSLurxSP/NqzBQWYFsPWPtBOHChDZZwji3bRYhZSnqVfyI4eXmUTMoj3Wb9Xtm1bPoDZTdDQEzgoQDUg==", - "dependencies": { - "AngleSharp": "1.4.0", - "AngleSharp.Css": "1.0.0-beta.157", - "AngleSharp.Diffing": "1.1.1", - "Microsoft.AspNetCore.Components": "10.0.0", - "Microsoft.AspNetCore.Components.Authorization": "10.0.0", - "Microsoft.AspNetCore.Components.Web": "10.0.0", - "Microsoft.AspNetCore.Components.WebAssembly": "10.0.0", - "Microsoft.AspNetCore.Components.WebAssembly.Authentication": "10.0.0", - "Microsoft.Extensions.Caching.Memory": "10.0.0", - "Microsoft.Extensions.Localization.Abstractions": "10.0.0", - "Microsoft.Extensions.Logging": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0" - } - }, - "Microsoft.EntityFrameworkCore.InMemory": { - "type": "Direct", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "zz4THzlDOrJ7fKU2YUOzQFs2LJ9DgOSr5xFXcDdoD59el73MTQLtQQOAJxQ94F4XDegyL9+2sePSQGdcU25ZxQ==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5" - } - }, - "Microsoft.IdentityModel.JsonWebTokens": { - "type": "Direct", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "prBU72cIP4V8E9fhN+o/YdskTsLeIcnKPbhZf0X6mD7fdxoZqnS/NdEkSr+9Zp+2q7OZBOMfNBKGbTbhXODO4w==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "8.16.0" - } - }, - "MSTest": { - "type": "Direct", - "requested": "[4.1.0, )", - "resolved": "4.1.0", - "contentHash": "2bk47yg7HcHRyf6Zf0XgCZicTVTQj4D5lonYTO7lWMxCQB+x66VrQNc2dADBfzthKXfHaA37m8i+VV5h6SbWiA==", - "dependencies": { - "MSTest.TestAdapter": "4.1.0", - "MSTest.TestFramework": "4.1.0", - "Microsoft.NET.Test.Sdk": "18.0.1", - "Microsoft.Testing.Extensions.CodeCoverage": "18.4.1", - "Microsoft.Testing.Extensions.TrxReport": "2.1.0" - } - }, - "AngleSharp": { - "type": "Transitive", - "resolved": "1.4.0", - "contentHash": "6ph8mpaQx0KL0COYRt0kI8MB9gSp1PtKijKMhJU//+aVFgKAJLKDesG/+26JSaVCOrHNgPf12wpfoyRcMYOeXg==" - }, - "AngleSharp.Css": { - "type": "Transitive", - "resolved": "1.0.0-beta.157", - "contentHash": "yptHmuGt2tzNGCeD7Orh6HRs4j7MH3IUhI+FM640OlmSwWRMd1yjKnicVcNG147IdF/tjOvgqtvpTU0pH6wVpA==", - "dependencies": { - "AngleSharp": "[1.0.0, 2.0.0)" - } - }, - "AngleSharp.Diffing": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "Uzz5895TpRyMA4t8GExmq4TxXqi3+bZTgb3kJgH+tdwrSuo9CO6Dlmv+Oqyhb2pNRfbnReLUzhlHAuT7c+3jSg==", - "dependencies": { - "AngleSharp": "1.1.2", - "AngleSharp.Css": "1.0.0-beta.144" - } - }, - "BouncyCastle.Cryptography": { - "type": "Transitive", - "resolved": "2.6.2", - "contentHash": "7oWOcvnntmMKNzDLsdxAYqApt+AjpRpP2CShjMfIa3umZ42UQMvH0tl1qAliYPNYO6vTdcGMqnRrCPmsfzTI1w==" - }, - "Grpc.Core.Api": { - "type": "Transitive", - "resolved": "2.76.0", - "contentHash": "cSxC2tdnFdXXuBgIn1pjc4YBx7LXTCp4M0qn+SMBS35VWZY+cEQYLWTBDDhdBH1HzU7BV+ncVZlniGQHMpRJKQ==" - }, - "Grpc.Net.Common": { - "type": "Transitive", - "resolved": "2.76.0", - "contentHash": "bZpiMVYgvpB44/wBh1RotrkqC7bg2FOasLri2GhR3hMKyzsiTxCoDE49YjPrJeFc4RW0wS8u+EInI09sjxVFRA==", - "dependencies": { - "Grpc.Core.Api": "2.76.0" - } - }, - "Microsoft.ApplicationInsights": { - "type": "Transitive", - "resolved": "2.23.0", - "contentHash": "nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw==" - }, - "Microsoft.AspNetCore.Components": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "ljLBmYTPkIe/WhOn/y3kpMCJ4A/xg76H/SRm9XkoOBqlM96Ntcbr+WFJqV/0bEqjaUqQYIMITPnJXrVJ242cWQ==", - "dependencies": { - "Microsoft.AspNetCore.Authorization": "10.0.0", - "Microsoft.AspNetCore.Components.Analyzers": "10.0.0" - } - }, - "Microsoft.AspNetCore.Components.Analyzers": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "5j9dQ/U51yLLKo8hKJOU7uTPppPsjLTua0PFzRotaePcmz7M9W7pM69pBXDEgkBfGD1tp2ufH0zHRHkwg1ikDg==" - }, - "Microsoft.AspNetCore.Components.Authorization": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "z/4yuTmCD1A3x++Dr8s2H3yD6nUGglqxvjsPL65BUynJlEO0ZaOaI0TIQ58+OyU8IAw98eprHlezix8UyRMqKg==", - "dependencies": { - "Microsoft.AspNetCore.Authorization": "10.0.0", - "Microsoft.AspNetCore.Components": "10.0.0" - } - }, - "Microsoft.AspNetCore.Components.Forms": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "5kMwH8DqYFfUpyMNv+IzIoDHxR8fHTPKeJeFNAyjY5tMxo3yyM7ezmuYNcVt9QJ+6K2soHQjBnCvFs8yNd3UGQ==", - "dependencies": { - "Microsoft.AspNetCore.Components": "10.0.0", - "Microsoft.Extensions.Validation": "10.0.0" - } - }, - "Microsoft.AspNetCore.Components.Web": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "TAv9+cOrU27YPKuHE7AlG2UBWtTWivvcDHmfdN2yngzQFtas+3p2IBDAF6odNfOJiW3Cs1lHwzqLAoNw5Sc59Q==", - "dependencies": { - "Microsoft.AspNetCore.Components": "10.0.0", - "Microsoft.AspNetCore.Components.Forms": "10.0.0", - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Primitives": "10.0.0", - "Microsoft.JSInterop": "10.0.0" - } - }, - "Microsoft.AspNetCore.Components.WebAssembly": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "ens4WMX0PBTHxRDYpS3i//VktXi+24my01qXI0P91q2rDMHcIKRN0/sdE+4kB1ZwJpHec9vYxDmmnw/JOcXCwQ==", - "dependencies": { - "Microsoft.AspNetCore.Components.Web": "10.0.0", - "Microsoft.Extensions.Configuration.Binder": "10.0.0", - "Microsoft.Extensions.Configuration.Json": "10.0.0", - "Microsoft.Extensions.Logging": "10.0.0", - "Microsoft.JSInterop.WebAssembly": "10.0.0" - } - }, - "Microsoft.AspNetCore.Components.WebAssembly.Authentication": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "u4cqo7IdawVPAPHDBlyiTmEodGom6m/OnqXnioz71ASA2l7pAebLed5vaErtsGT9Ud0Z1Nudthy+3FBk0BmHjQ==", - "dependencies": { - "Microsoft.AspNetCore.Components.Authorization": "10.0.0", - "Microsoft.AspNetCore.Components.Web": "10.0.0" - } - }, - "Microsoft.AspNetCore.Connections.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "ruD0Lb3Dy8Fn1KJlyILl5WxOwPdhUQzEAYpDEEe9MqMRusC6OqU7PtmwTXP4rqEKOw8yyFq8MjCnOLb1+24T6Q==", - "dependencies": { - "Microsoft.Extensions.Features": "10.0.5" - } - }, - "Microsoft.AspNetCore.Cryptography.Internal": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "kFUpNRYySfqNLuQKGMKZ2mK8b86R1zizlc9QB6R/Ess0rSkrA8pRNCMSFm+DqUnNfm5G3FWjsYIJOKYyhkHeig==" - }, - "Microsoft.AspNetCore.Cryptography.KeyDerivation": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "NkWUZYkL6wavYY2wMZgnODzsyTOZhcRxP/DJvZlBbWEJViukdyuIqtdTzltODyjsc3MjEvxmbPDDk2KgGv6tMA==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.Internal": "10.0.5" - } - }, - "Microsoft.AspNetCore.Http.Connections.Client": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "z4Iny9wOi2D3h/YVPELyb2aMakFQIwiAeCHl1T8giCoUHgql+HtvKKldGxQC6/g4niuLBipi7O6zQT34O9/Rcw==", - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Common": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.AspNetCore.Http.Connections.Common": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "4zUdCDERnuMPhiKnxeu6aWUlXQFzfeswcCy8WEC+YkJkrHi8ZRHESBT50jR5HBCu4cyBJeDbuDjfh2wHTIczUw==", - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.5" - } - }, - "Microsoft.AspNetCore.Metadata": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "nXVB1K4RzyhDHKYWLiq3+aJopJZKO5ojFqHV9PZ74fe4VWM/8itoouqsd2KIqSooIwQ13UDNlPQfN2rWr7hc2A==" - }, - "Microsoft.AspNetCore.SignalR.Client.Core": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "A2+sApRgxWSxzD0Q5eRqElPPzqIqOljYCzt/mtC/KIjlTNLvVWoQn2amNnX3o7BrbaSdI1yeFcyKVal7zVgcSw==", - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.5", - "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.5", - "Microsoft.Extensions.DependencyInjection": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5" - } - }, - "Microsoft.AspNetCore.SignalR.Common": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "+aUsWJhnJlGzaSs8lipFVH6XuKYJwnJWdK200KO2NvbJFRQSauYynSLQhzhf3mpGGFoQ1U5Z7MVxJiC1ANCOYA==", - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "bFLLtvuZ0ATBhuK5ZqbJW+pG9XWu+u+yh+sR90ra57uMgR2WEQtMAnQPK94/pQOzbQAzm1vNr4bP/JqMs+OftQ==", - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.5" - } - }, - "Microsoft.CodeCoverage": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "O+utSr97NAJowIQT/OVp3Lh9QgW/wALVTP4RG1m2AfFP4IyJmJz0ZBmFJUsRQiAPgq6IRC0t8AAzsiPIsaUDEA==" - }, - "Microsoft.DiaSymReader": { - "type": "Transitive", - "resolved": "2.0.0", - "contentHash": "QcZrCETsBJqy/vQpFtJc+jSXQ0K5sucQ6NUFbTNVHD4vfZZOwjZ/3sBzczkC4DityhD3AVO/+K/+9ioLs1AgRA==" - }, - "Microsoft.EntityFrameworkCore.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "32c58Rnm47Qvhimawf67KO9PytgPz3QoWye7Abapt0Yocw/JnzMiSNj/pRoIKyn8Jxypkv86zxKD4Q/zNTc0Ag==" - }, - "Microsoft.EntityFrameworkCore.Analyzers": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "ipC4u1VojgEfoIZhtbS2Sx5IluJTP/Jf1hz3yGsxGBgSukYY/CquI6rAjxn5H58CZgVn36qcuPPtNMwZ0AUzMg==" - }, - "Microsoft.EntityFrameworkCore.Relational": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "uxmFjZEAB/KbsgWFSS4lLqkEHCfXxB2x0UcbiO4e5fCRpFFeTMSx/me6009nYJLu5IKlDwO1POh++P6RilFTDw==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5" - } - }, - "Microsoft.EntityFrameworkCore.Sqlite.Core": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "rVH43bcUyZiMn0SnCpVnvFpl4PFxT4GwmuVVLcT4JL0NtzuHY9ymKV+Llb5cjuJ+6+gEl4eixy2rE8nxOPcBSA==", - "dependencies": { - "Microsoft.Data.Sqlite.Core": "10.0.5", - "Microsoft.EntityFrameworkCore.Relational": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyModel": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "SQLitePCLRaw.core": "2.1.11" - } - }, - "Microsoft.Extensions.AmbientMetadata.Application": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "bovnONzrr/JIc+w343i857rJEb7cQH9UzEjbV5n67agWBEYICGQb8xiqYz5+GoFXp6mKEKLwYCQGttMU1p5yXQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.4", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.4", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "k/QDdQ94/0Shi0KfU+e12m73jfQo+3JpErTtgpZfsCIqkvdEEO0XIx6R+iTbN55rNPaNhOqNY4/sB+jZ8XxVPw==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Caching.Memory": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "jUEXmkBUPdOS/MP9areK/sbKhdklq9+tEhvwfxGalZVnmyLUO5rrheNNutUBtvbZ7J8ECkG7/r2KXi/IFC06cA==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "4WkknDbVrHNf+S6fwSt1OAXlGJ/G/QrtJlqx4aNzOLmeT3GRyxpGLZn+Q3UV+RMRAF6FfsijEZBg2ZAW8bTAkg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.ObjectPool": "10.0.4" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "8Rx5sqg04FttxrumyG6bmoRuFRgYzK6IVwF1i0/o0cXfKBdDeVpJejKHtJCMjyg9E/DNMVqpqOGe/tCT5gYvVA==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "99Z4rjyXopb1MIazDSPcvwYCUdYNO01Cf1GUs2WUjIFAbkGmwzj2vPa2k+3pheJRV+YgNd2QqRKHAri0oBAU4Q==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "OhTr0O79dP49734lLTqVveivVX9sDXxbI/8vjELAZTHXqoN90mdpgTAgwicJED42iaHMCcZcK6Bj+8wNyBikaw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", - "Microsoft.Extensions.FileProviders.Physical": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "v1SVsowG6YE1YnHVGmLWz57YTRCQRx9pH5ebIESXfm5isI9gA3QaMyg/oMTzPpXYZwSAVDzYItGJKfmV+pqXkQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "iVMtq9eRvzyhx8949EGT0OCYJfXi737SbRVzWXE5GrOgGj5AaZ9eUuxA/BSUfmOMALKn/g8KfFaNQw0eiB3lyA==" - }, - "Microsoft.Extensions.DependencyInjection.AutoActivation": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "ksmUG2SFTcXzYdyoLOdeSM/qYLRGN6qbbSzYVkwMK9xsctfR1hYkUayeOpFCMd7L+QSlYX72mK9wxwdgQxyS4g==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "10.0.4" - } - }, - "Microsoft.Extensions.DependencyModel": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "xA4kkL+QS6KCAOKz/O0oquHs44Ob8J7zpBCNt3wjkBWDg5aCqfwG8rWWLsg5V86AM0sB849g9JjPjIdksTCIKg==" - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "vAJHd4yOpmKoK+jBuYV7a3y+Ab9U4ARCc29b6qvMy276RgJFw9LFs0DdsPqOL3ahwzyrX7tM+i4cCxU/RX0qAg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.5" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "/nYGrpa9/0BZofrVpBbbj+Ns8ZesiPE0V/KxsuHgDgHQopIzN54nRaQGSuvPw16/kI9sW1Zox5yyAPqvf0Jz6A==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "1/hQmONMWxRTKXuN0pQShQN9QsqIRTS1G4fdmKW0O9phuVZjyzIROQD9Fbfwyn2t+yvP8SzjatGAPX4jDRfgHg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4" - } - }, - "Microsoft.Extensions.Features": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "yvfER/YMzYyQHbnLW+zGM3CNqG+4RpM6SIJzaHei0v+xPxMhigckqY4kvucmUBeOfs49HCZu+WxrgfXSbsDkgg==" - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "nCBmCx0Xemlu65ZiWMcXbvfvtznKxf4/YYKF9R28QkqdI9lTikedGqzJ28/xmdGGsxUnsP5/3TQGpiPwVjK0dA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.FileProviders.Embedded": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "DQzkbLFNfwmjxErAnWyZTTyBd4cMo6vmGteM4Ayedhk5Pccm2VuKoeKcOZjJG1T+dYK6lMCNk2L7Ftl7dLhgqg==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.FileProviders.Physical": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "dMu5kUPSfol1Rqhmr6nWPSmbFjDe9w6bkoKithG17bWTZA0UyKirTatM5mqYUN3mGpNA0MorlusIoVTh6J7o5g==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "mOE3ARusNQR0a5x8YOcnUbfyyXGqoAWQtEc7qFOfNJgruDWQLo39Re+3/Lzj5pLPFuFYj8hN4dgKzaSQDKiOCw==" - }, - "Microsoft.Extensions.Http.Diagnostics": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "ybx2QcCWROCnUCbSj/IyHXn1c58brjjHzTTbueKgBl/qHsWk69mu25mjQ3oaMsO1I0+EcS6AhVuhIopL2q3IDw==", - "dependencies": { - "Microsoft.Extensions.Http": "10.0.4", - "Microsoft.Extensions.Telemetry": "10.4.0" - } - }, - "Microsoft.Extensions.Identity.Core": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "ew2Xob+HFvJvM7BelIrUIbGeVMO2q1A6gsZEsI8N/v0ddSv7qbvvY68mH16XzvlsqydqD3ct5ioQHsiEUDSNkg==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.KeyDerivation": "10.0.5", - "Microsoft.Extensions.Diagnostics": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.Extensions.Identity.Stores": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "St8g+4xGLUhfSzTlHSLtCv7kh/tppvFab5x0kFIOsWryf1ffK2Ux+JIg01v5Yf27g2iQLCFEmW5hG5DDZL1HLA==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.5", - "Microsoft.Extensions.Identity.Core": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5" - } - }, - "Microsoft.Extensions.Localization.Abstractions": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "+gopxHC5+vWE61Qq2i+aFblxjSiS4UyjUG5kpfXodWbeBVwXPeP66s8uAi0LPAwnhS5jInmYJNRFYUMn+sdtKg==" - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "+XTMKQyDWg4ODoNHU/BN3BaI1jhGO7VCS+BnzT/4IauiG6y2iPAte7MyD7rHKS+hNP0TkFkjrae8DFjDUxtcxg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "10.0.4", - "contentHash": "XPXoOpUnWEh0pV7Vl2DK2wj47y73Krhrve5OkPrvGIWdZ4U2r47WO8hEdv+wKn65Kh4pmDdiWm7Ibo5pZX+vig==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.4", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", - "Microsoft.Extensions.Configuration.Binder": "10.0.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.Logging": "10.0.4", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "10.0.4", - "contentHash": "2pufIFOgNl/yWTOoIC9XgBnO9VxgfAjdRCnVwpE2+ICfcroGnjuEAGzJ5lTdZeAe0HvA31vMBWXtcmGB7TOq3g==" - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "MDaQMdUplw0AIRhWWmbLA7yQEXaLIHb+9CTroTiNS8OlI0LMXS4LCxtopqauiqGCWlRgJ+xyraVD8t6veRAFbw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "BB9uUW3+6Rxu1R97OB1H/13lUF8P2+H1+eDhpZlK30kDh/6E4EKHBUqTp+ilXQmZLzsRErxON8aBSR6WpUKJdg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Configuration.Binder": "10.0.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "/HUHJ0tw/LQvD0DZrz50eQy/3z7PfX7WWEaXnjKTV9/TNdcgFlNTZGo49QhS7PTmhDqMyHRMqAXSBxLh0vso4g==" - }, - "Microsoft.Extensions.Resilience": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "41CCbJJPsDWU6NsmKfANHkfT/+KCBlZZqQ1eBoQhhW0xqGCiWmUlMdi2BoaM/GcwKHX5WiQL/IESROmgk0Owfw==", - "dependencies": { - "Microsoft.Extensions.Diagnostics": "10.0.4", - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.4.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4", - "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0", - "Polly.Extensions": "8.4.2", - "Polly.RateLimiting": "8.4.2" - } - }, - "Microsoft.Extensions.ServiceDiscovery.Abstractions": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "HkBb7cdi27tkQiQw1anQFbXe+A3pjRwDKgVbd/DD9fMAO2X9abK0FEyM/tNVXjW3lwOWl2tF+Xij/DqI6i+JTg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", - "Microsoft.Extensions.Configuration.Binder": "10.0.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.Features": "10.0.4", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4", - "Microsoft.Extensions.Primitives": "10.0.4" - } - }, - "Microsoft.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "AbHleTzdpGPjA6RpOjKVHEYx7SoBRnJ2bwAbbPa3aGB7HiVwBmeTJhBGhtIBiuIW0VpKDS8x+bV5iWqpBRIf4w==", - "dependencies": { - "Microsoft.Extensions.AmbientMetadata.Application": "10.4.0", - "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.4.0", - "Microsoft.Extensions.Logging.Configuration": "10.0.4", - "Microsoft.Extensions.ObjectPool": "10.0.4", - "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0" - } - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "3b2uVa4voJfLLg39BPCKQS0ZgnpEZFkKf7YmnMVlM5FQJYBPOuePIQdnEK1/Oxd+w3GscxGYuE7IMOXDwixZtQ==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "10.4.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.ObjectPool": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4" - } - }, - "Microsoft.Extensions.Validation": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "viIKcmaf1akdhx77c+dLkODvhL+HyonHNpBsicndoi47zvbSeHJEWPOk188NnFCh+dCUz7Icld1jPMbS5E2fqw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0" - } - }, - "Microsoft.IdentityModel.Abstractions": { - "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "gSxKLWRZzBpIsEoeUPkxfywNCCvRvl7hkq146XHPk5vOQc9izSf1I+uL1vh4y2U19QPxd9Z8K/8AdWyxYz2lSg==" - }, - "Microsoft.IdentityModel.Logging": { - "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "MTzXmETkNQPACR7/XCXM1OGM6oU9RkyibqeJRtO9Ndew2LnGjMf9Atqj2VSf4XC27X0FQycUAlzxxEgQMWn2xQ==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.16.0" - } - }, - "Microsoft.JSInterop": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "Qfs4KtmfMUQ/BtD4jdt753kiAa7frm1QVms8UHiFArOokoXBkBOOKE2N5APdt3BlAdTSFJNiuDFfgDzVq/3EZg==" - }, - "Microsoft.JSInterop.WebAssembly": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "j0lrmG+7X4OZh75IzOX00nkwAEjXSgt2Ul6kjwmVkAOBzd8JC1Q/yJ/fC4jWcIXe4h22881Qq1o46p/TnSNaRQ==", - "dependencies": { - "Microsoft.JSInterop": "10.0.0" - } - }, - "Microsoft.NET.Test.Sdk": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "WNpu6vI2rA0pXY4r7NKxCN16XRWl5uHu6qjuyVLoDo6oYEggIQefrMjkRuibQHm/NslIUNCcKftvoWAN80MSAg==", - "dependencies": { - "Microsoft.CodeCoverage": "18.0.1", - "Microsoft.TestPlatform.TestHost": "18.0.1" - } - }, - "Microsoft.Testing.Extensions.CodeCoverage": { - "type": "Transitive", - "resolved": "18.4.1", - "contentHash": "l1VZM9dg9s76L5D288ipAT4HRYDJ6Vxh8wX20gfS9VnpueedRfN4/aGNn4oA1g6pwq2WSM3Ci7IoSSGPiqu+WQ==", - "dependencies": { - "Microsoft.DiaSymReader": "2.0.0", - "Microsoft.Extensions.DependencyModel": "8.0.2", - "Microsoft.Testing.Platform": "2.0.2" - } - }, - "Microsoft.Testing.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "5TwgTx2u7k9Al/xbZ18QXq4Hdy2xewkVTI6K3sk+jY2ykqUkIKNuj7rFu3GOV5KnEUkevhw6eZcyZs77STHJIA==", - "dependencies": { - "Microsoft.ApplicationInsights": "2.23.0", - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Extensions.TrxReport": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "cXmP225WcMLLOSrW8xekaNhfzdBwXX3cbXbE5qSzmLbK0KZe3z8rAObKj70FWiPPPzm2W22x0ZW93gsmAfK6Mg==", - "dependencies": { - "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Extensions.TrxReport.Abstractions": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "D8xmIJYQFJ6D49Rx5/vPrkZZxb338Jkew+eSqZLBfBiWKw4QZKy3i1BOXiLfz0lOmaNErwDz/YWRojCdNl+B9Q==", - "dependencies": { - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Extensions.VSTestBridge": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "bNRIEA2YoGr+Y+7LHdA7i1U80+7BAdf4K4Qh4Kx6eKkoBK/NV7QpoMg+GWPP0/eqAFzuUmUOIPVZ87Oo0Vyxmw==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "18.0.1", - "Microsoft.Testing.Extensions.Telemetry": "2.1.0", - "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Platform": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "aHkjNTGIA+Zbdw6RJgSFrbDrCjO0CgqpElqYcvkRSeUhBv2bKarnvU3ep786U7UqrPlArT/B7VmImRibJD0Zrg==" - }, - "Microsoft.Testing.Platform.MSBuild": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "UpfPebXQtHGrWz21+YLHmJSm+5zsuPE9U9pfdCtoB+67g75fDmWlNgpkH2ZmdVhSwkjNIed9Icg8Iu63z2ei5Q==", - "dependencies": { - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.TestPlatform.ObjectModel": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "qT/mwMcLF9BieRkzOBPL2qCopl8hQu6A1P7JWAoj/FMu5i9vds/7cjbJ/LLtaiwWevWLAeD5v5wjQJ/l6jvhWQ==" - }, - "Microsoft.TestPlatform.TestHost": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "uDJKAEjFTaa2wHdWlfo6ektyoh+WD4/Eesrwb4FpBFKsLGehhACVnwwTI4qD3FrIlIEPlxdXg3SyrYRIcO+RRQ==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "18.0.1", - "Newtonsoft.Json": "13.0.3" - } - }, - "Microsoft.Win32.SystemEvents": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==" - }, - "MimeKit": { - "type": "Transitive", - "resolved": "4.15.1", - "contentHash": "cxCcQhD0zhboFoG136jJuJtQjNRDJ+BxBm3f2vWn+53bff/CRo+K1mAkWjsW4Wuyy5O22F40MdMG2nRzQu1cJw==", - "dependencies": { - "BouncyCastle.Cryptography": "2.6.2", - "System.Security.Cryptography.Pkcs": "10.0.0" - } - }, - "MSTest.Analyzers": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "4ElL/aqomiUInr090VN4udqz46AuszXLrifHkLrgj0zb7na8eAoyUQt3BwDLTcGd1bSkmk3SfD02rZtKU+ZiqQ==" - }, - "MSTest.TestAdapter": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "bRW1Hftwq0XbcVExcAbj4YAfSZDRAziL0mygDkPBvaUe2nSsWFQIatze5lHVjPFJMvSFgWnItku4pguIy5FowQ==", - "dependencies": { - "MSTest.TestFramework": "4.1.0", - "Microsoft.Testing.Extensions.VSTestBridge": "2.1.0", - "Microsoft.Testing.Platform.MSBuild": "2.1.0" - } - }, - "MSTest.TestFramework": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "BzpvsK+CRbk6khwY62h+7HfYzIxtJXyPv9tOI9T90cy5CVy+WI1JkN4ZaNL4Dobqb6dywSwabLTIbPZKpdrr+A==", - "dependencies": { - "MSTest.Analyzers": "4.1.0" - } - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.3", - "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" - }, - "Npgsql": { - "type": "Transitive", - "resolved": "10.0.2", - "contentHash": "q5RfBI+wywJSFUNDE1L4ZbHEHCFTblo8Uf6A6oe4feOUFYiUQXyAf9GBh5qEZpvJaHiEbpBPkQumjEhXCJxdrg==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0" - } - }, - "OpenTelemetry": { - "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "7mS/oZFF8S6xyqGQfMU1btp0nXJQUPWV535Vp/XMLYwRAUv36xQN+U4vufWBF1+z4HnRTOwuFHtUSGnHbyN6FQ==", - "dependencies": { - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", - "Microsoft.Extensions.Logging.Configuration": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.0" - } - }, - "OpenTelemetry.Api": { - "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "vk5OGdf6K9kQScCWo3bRjhDWCv6Pqw92IpX4dlARZ8B1WL7/2NGTDtCkkw42eQf7UdwyoHKzVvMH/PtL8d6z7w==" - }, - "OpenTelemetry.Api.ProviderBuilderExtensions": { - "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "OnuSUlRpGvowkOzGFQfy+KZFu0cITfKfh2IYJJiZskxVJiOuexwOOuvfDAgpJdmTzVWAHjYdz2shcHZaJ06UjQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "OpenTelemetry.Api": "1.15.0" - } - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" - }, - "Polly.Extensions": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Polly.Core": "8.4.2" - } - }, - "Polly.RateLimiting": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", - "dependencies": { - "Polly.Core": "8.4.2", - "System.Threading.RateLimiting": "8.0.0" - } - }, - "Serilog": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "+cDryFR0GRhsGOnZSKwaDzRRl4MupvJ42FhCE4zhQRVanX0Jpg6WuCBk59OVhVDPmab1bB+nRykAnykYELA9qQ==" - }, - "Serilog.Extensions.Hosting": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Serilog": "4.3.0", - "Serilog.Extensions.Logging": "10.0.0" - } - }, - "Serilog.Extensions.Logging": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", - "dependencies": { - "Microsoft.Extensions.Logging": "10.0.0", - "Serilog": "4.2.0" - } - }, - "Serilog.Formatting.Compact": { - "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "Serilog.Settings.Configuration": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "LNq+ibS1sbhTqPV1FIE69/9AJJbfaOhnaqkzcjFy95o+4U+STsta9mi97f1smgXsWYKICDeGUf8xUGzd/52/uA==", - "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "10.0.0", - "Microsoft.Extensions.DependencyModel": "10.0.0", - "Serilog": "4.3.0" - } - }, - "Serilog.Sinks.Debug": { - "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "SQLitePCLRaw.bundle_e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "DC4nA7yWnf4UZdgJDF+9Mus4/cb0Y3Sfgi3gDnAoKNAIBwzkskNAbNbyu+u4atT0ruVlZNJfwZmwiEwE5oz9LQ==", - "dependencies": { - "SQLitePCLRaw.lib.e_sqlite3": "2.1.11", - "SQLitePCLRaw.provider.e_sqlite3": "2.1.11" - } - }, - "SQLitePCLRaw.core": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "PK0GLFkfhZzLQeR3PJf71FmhtHox+U3vcY6ZtswoMjrefkB9k6ErNJEnwXqc5KgXDSjige2XXrezqS39gkpQKA==" - }, - "SQLitePCLRaw.lib.e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "Ev2ytaXiOlWZ4b3R67GZBsemTINslLD1DCJr2xiacpn4tbapu0Q4dHEzSvZSMnVWeE5nlObU3VZN2p81q3XOYQ==" - }, - "SQLitePCLRaw.provider.e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "Y/0ZkR+r0Cg3DQFuCl1RBnv/tmxpIZRU3HUvelPw6MVaKHwYYR8YNvgs0vuNuXCMvlyJ+Fh88U1D4tah1tt6qw==", - "dependencies": { - "SQLitePCLRaw.core": "2.1.11" - } - }, - "System.Drawing.Common": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "NfuoKUiP2nUWwKZN6twGqXioIe1zVD0RIj2t976A+czLHr2nY454RwwXs6JU9Htc6mwqL6Dn/nEL3dpVf2jOhg==", - "dependencies": { - "Microsoft.Win32.SystemEvents": "6.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "UPWqLSygJlFerRi9XNIuM0a1VC8gHUIufyP24xQ0sc+XimqUAEcjpOz9DhKpyDjH+5B/wO3RpC0KpkEeDj/ddg==" - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "TimeZoneConverter": { - "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "sFbY65N/5GdsHx7nkdHFHUG+5Ar4W0w6Aks7Y2X+Q4NOTw6XyX2Il7jm+4tPkc//4mA3nG0RdxI8gKgoJitdLw==" - }, - "werkr.common": { - "type": "Project", - "dependencies": { - "Google.Protobuf": "[3.34.1, )", - "Microsoft.AspNetCore.Authorization": "[10.0.5, )", - "Microsoft.Extensions.Configuration.Json": "[10.0.5, )", - "Microsoft.IdentityModel.Tokens": "[8.16.0, )", - "TimeZoneNames": "[7.0.0, )", - "Werkr.Common.Configuration": "[1.0.0, )" - } - }, - "werkr.common.configuration": { - "type": "Project" - }, - "werkr.core": { - "type": "Project", - "dependencies": { - "Grpc.Net.Client": "[2.76.0, )", - "MailKit": "[4.15.1, )", - "Microsoft.Extensions.Hosting.Abstractions": "[10.0.5, )", - "System.Security.Cryptography.ProtectedData": "[10.0.5, )", - "Werkr.Common": "[1.0.0, )", - "Werkr.Data": "[1.0.0, )" - } - }, - "werkr.data": { - "type": "Project", - "dependencies": { - "EFCore.NamingConventions": "[10.0.1, )", - "Microsoft.EntityFrameworkCore": "[10.0.5, )", - "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.5, )", - "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.1, )", - "Werkr.Common": "[1.0.0, )" - } - }, - "werkr.data.identity": { - "type": "Project", - "dependencies": { - "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.5, )", - "Microsoft.AspNetCore.Identity.UI": "[10.0.5, )", - "Werkr.Common": "[1.0.0, )", - "Werkr.Data": "[1.0.0, )" - } - }, - "werkr.server": { - "type": "Project", - "dependencies": { - "Microsoft.AspNetCore.SignalR.Client": "[10.0.5, )", - "Microsoft.Extensions.Http.Resilience": "[10.4.0, )", - "Microsoft.IdentityModel.JsonWebTokens": "[8.16.0, )", - "QRCoder": "[1.7.0, )", - "Serilog.AspNetCore": "[10.0.0, )", - "Serilog.Sinks.Console": "[6.1.1, )", - "Serilog.Sinks.File": "[7.0.0, )", - "Serilog.Sinks.OpenTelemetry": "[4.2.0, )", - "Werkr.Common": "[1.0.0, )", - "Werkr.Data.Identity": "[1.0.0, )", - "Werkr.ServiceDefaults": "[1.0.0, )" - } - }, - "werkr.servicedefaults": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Http.Resilience": "[10.4.0, )", - "Microsoft.Extensions.ServiceDiscovery": "[10.4.0, )", - "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.15.0, )", - "OpenTelemetry.Extensions.Hosting": "[1.15.0, )", - "OpenTelemetry.Instrumentation.AspNetCore": "[1.15.1, )", - "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.15.0-beta.1, )", - "OpenTelemetry.Instrumentation.GrpcNetClient": "[1.15.0-beta.1, )", - "OpenTelemetry.Instrumentation.Http": "[1.15.0, )", - "OpenTelemetry.Instrumentation.Runtime": "[1.15.0, )" - } - }, - "EFCore.NamingConventions": { - "type": "CentralTransitive", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "Xs5k8XfNKPkkQSkGmZkmDI1je0prLTdxse+s8PgTFZxyBrlrTLzTBUTVJtQKSsbvu4y+luAv8DdtO5SALJE++A==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "[10.0.1, 11.0.0)", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.1, 11.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1" - } - }, - "Google.Protobuf": { - "type": "CentralTransitive", - "requested": "[3.34.1, )", - "resolved": "3.34.1", - "contentHash": "212vdYxRuVopGE5bess6Jg5oXWyizA6hcLPTI7G+qA4PthQEvfeof3njT+7VSY5v/+O0P22xTydiP5fSJJpGEA==" - }, - "Grpc.Net.Client": { - "type": "CentralTransitive", - "requested": "[2.76.0, )", - "resolved": "2.76.0", - "contentHash": "K1oldmqw2+Gn69nGRzZLhqSiUZwelX1GrBu/cUl9wNf1C0uB61vFS6JcxUUv9P8VoUJhFsmV44JA6lI2EUt4xw==", - "dependencies": { - "Grpc.Net.Common": "2.76.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.0" - } - }, - "MailKit": { - "type": "CentralTransitive", - "requested": "[4.15.1, )", - "resolved": "4.15.1", - "contentHash": "4mLbqTbH3ctd0NlukHjVQbU3ZnNDuCtB6ttNZDLPZLWMA2Dr31rh/eCSTqOwDojUX8zfDOVaxstMgJTE9PwZNA==", - "dependencies": { - "MimeKit": "4.15.1" - } - }, - "Microsoft.AspNetCore.Authorization": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "NbFi4wN6fUvZK4AKmixpfx0IvqtVimKEn8ZX28LkzZBVo09YnLbyRrJ1001IVQDLbV+aYpS/cLhVJu5JD0rY5A==", - "dependencies": { - "Microsoft.AspNetCore.Metadata": "10.0.5", - "Microsoft.Extensions.Diagnostics": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "oo1uauTwgcnhYgituZ2nI3wJ8XN9z76ggu2zkOJu1BCfOOsqr+g08Kr4MOiMuXEhwySkpIV+MVoC25hC1288NA==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Relational": "10.0.5", - "Microsoft.Extensions.Identity.Stores": "10.0.5" - } - }, - "Microsoft.AspNetCore.Identity.UI": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "qzYhpJ4Uxng18hmuKqwqydZaPzItrv9WOwNULJ2ka952TZKlOQkERTSkVO8G/19WiRtoznZatrcRyOvppYRGFA==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Embedded": "10.0.5", - "Microsoft.Extensions.Identity.Stores": "10.0.5" - } - }, - "Microsoft.AspNetCore.SignalR.Client": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "2v+Qi63UGm8hu9RAAfWeim3H9ovnxDiPx2MyLQI8nsWrgP+76Z7oiKj+kpVCR1N5QU9bF94RV0lZ/7OJH1LXUA==", - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Client": "10.0.5", - "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.5" - } - }, - "Microsoft.Data.Sqlite.Core": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "jFYXnh7s0RShCw6Vkf+ReGCw+mVi7ISg1YaEzYCJcXnUifmbW+aqvCsRJuSRj2ZuQ+oqetpjxlZtbpMmk5FKqQ==", - "dependencies": { - "SQLitePCLRaw.core": "2.1.11" - } - }, - "Microsoft.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "9tNBmK3EpYVGRQLiqP+bqK2m+TD0Gv//4vCzR7ZOgl4FWzCFyOpYdIVka13M4kcBdPdSJcs3wbHr3rmzOqbIMA==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "10.0.5", - "Microsoft.EntityFrameworkCore.Analyzers": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5" - } - }, - "Microsoft.EntityFrameworkCore.Sqlite": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "lxeRviglTkkmzYJVJ600yb6gJjnf5za9v7uH+0byuSXTGv7U8cT6hz7qRTmiGSOfLcl86QFdy2BBKaUFd6NQug==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Sqlite.Core": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyModel": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "SQLitePCLRaw.bundle_e_sqlite3": "2.1.11", - "SQLitePCLRaw.core": "2.1.11" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "P09QpTHjqHmCLQOTC+WyLkoRNxek4NIvfWt+TnU0etoDUSRxcltyd6+j/ouRbMdLR0j44GqGO+lhI2M4fAHG4g==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.Json": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "brBM/WP0YAUYh2+QqSYVdK8eQHYQTtTEUJXJ+84Zkdo2buGLja9VSrMIhgoeBUU7JBmcskAib8Lb/N83bvxgYQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.5", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "+Wb7KAMVZTomwJkQrjuPTe5KBzGod7N8XeG+ScxRlkPOB4sZLG4ccVwjV4Phk5BCJt7uIMnGHVoN6ZMVploX+g==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Http": { - "type": "CentralTransitive", - "requested": "[10.0.4, )", - "resolved": "10.0.4", - "contentHash": "QRbs+A+WfiGTnV9KFNfWlF+My5euQNZnsvdVMulwRN6C/tEPaF+ZlQfedHoNvFHKLwjQMmqwm4z+TSO9eLvRQw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.Diagnostics": "10.0.4", - "Microsoft.Extensions.Logging": "10.0.4", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4" - } - }, - "Microsoft.Extensions.Http.Resilience": { - "type": "CentralTransitive", - "requested": "[10.4.0, )", - "resolved": "10.4.0", - "contentHash": "HbkUsPUC7vLy2TaDbdA9aooW64n9yX4sUppRuiJ1cOzzU1FUW+MVEotm6kYVq6AuUI9xwFSBhRFzA03blmk3VA==", - "dependencies": { - "Microsoft.Extensions.Http.Diagnostics": "10.4.0", - "Microsoft.Extensions.ObjectPool": "10.0.4", - "Microsoft.Extensions.Resilience": "10.4.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "9HOdqlDtPptVcmKAjsQ/Nr5Rxfq6FMYLdhvZh1lVmeKR738qeYecQD7+ldooXf+u2KzzR1kafSphWngIM3C6ug==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.ServiceDiscovery": { - "type": "CentralTransitive", - "requested": "[10.4.0, )", - "resolved": "10.4.0", - "contentHash": "RznZAH6L4RNvroECT5JpqfFQJjHTn+8N7+ThSgYutbshkuymFeL/uBIZt1CM8LOdpPPhn4//a5fLUah9/k7ayQ==", - "dependencies": { - "Microsoft.Extensions.Http": "10.0.4", - "Microsoft.Extensions.ServiceDiscovery.Abstractions": "10.4.0" - } - }, - "Microsoft.IdentityModel.Tokens": { - "type": "CentralTransitive", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "rtViGJcGsN7WcfUNErwNeQgjuU5cJNl6FDQsfi9TncwO+Epzn0FTfBsg3YuFW1Q0Ch/KPxaVdjLw3/+5Z5ceFQ==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.IdentityModel.Logging": "8.16.0" - } - }, - "Npgsql.EntityFrameworkCore.PostgreSQL": { - "type": "CentralTransitive", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "P6EwH0Q4xkaA264iNZDqCPhWt8pscfUGxXazDQg4noBfqjoOlk4hKWfvBjF9ZX3R/9JybRmmJfmxr2iBMj0EpA==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", - "Npgsql": "10.0.2" - } - }, - "OpenTelemetry.Exporter.OpenTelemetryProtocol": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "VH8ANc/js9IRvfYt0Q2UaAxNCOWm+IU+vWrtoH7pfx4oWPVdISUt+9uWfBCFMWZg5WzQip5dhslyDjeyZXXfSQ==", - "dependencies": { - "OpenTelemetry": "1.15.0" - } - }, - "OpenTelemetry.Extensions.Hosting": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "RixjKyB1pbYGhWdvPto4KJs+exdQknJsnjUO9WszdLles5Vcd0EYzxPNJdwmLjYfP+Jfbr4B5nktM4ZgeHSWtg==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", - "OpenTelemetry": "1.15.0" - } - }, - "OpenTelemetry.Instrumentation.AspNetCore": { - "type": "CentralTransitive", - "requested": "[1.15.1, )", - "resolved": "1.15.1", - "contentHash": "wXaZTu6LHY8xcbRd6ClcrtjHqGVoGYCcArXEZA3iUjUcYSVYwDGyPU0PdkwTfylxv8JeCCVDQhVb0fT7xBJjGA==", - "dependencies": { - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[1.15.0-beta.1, )", - "resolved": "1.15.0-beta.1", - "contentHash": "N01GzP+r8lpSBiqjRX0/WjSp17r+zk6dKvGKthiASyFzF44lrJo8cA3ihXnw3p4Rnqg1mVjOYy19R6iJ84NTpg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.GrpcNetClient": { - "type": "CentralTransitive", - "requested": "[1.15.0-beta.1, )", - "resolved": "1.15.0-beta.1", - "contentHash": "SBas5+C4kGUqoy8OPpQis+QIgJ7/aaJl4H3oLzHCJnZLCb8TXZmQL2/r753RXXJUH8oIeLIzdW+EXgujSy+cpQ==", - "dependencies": { - "OpenTelemetry": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.Http": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "uToc7bUp8IEdb0ny9mKsL6FrrYelINPzxxiSShJgOf4XmQc4Azww6S5RjRj24YhsOn2a1MABOrxfVTZXtDk4Eg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.Runtime": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "OOvpqR/j2Pb6+tWhHNODIbSJ53Or/MDtTiXEyrsWI02K2lLAgvBFcxUOrHggS/8015cYR3AdSaXv6NZrkz5yQA==", - "dependencies": { - "OpenTelemetry.Api": "[1.15.0, 2.0.0)" - } - }, - "QRCoder": { - "type": "CentralTransitive", - "requested": "[1.7.0, )", - "resolved": "1.7.0", - "contentHash": "6R3hQkayihGIDjp3F1nLRDBWG+nqahGyOY2+fH4Rll16Vad67oaUUfHkOiMWKiJFnGh+PIGDfUos+0R9m54O1g==", - "dependencies": { - "System.Drawing.Common": "6.0.0" - } - }, - "Serilog.AspNetCore": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "a/cNa1mY4On1oJlfGG1wAvxjp5g7OEzk/Jf/nm7NF9cWoE7KlZw1GldrifUBWm9oKibHkR7Lg/l5jy3y7ACR8w==", - "dependencies": { - "Serilog": "4.3.0", - "Serilog.Extensions.Hosting": "10.0.0", - "Serilog.Formatting.Compact": "3.0.0", - "Serilog.Settings.Configuration": "10.0.0", - "Serilog.Sinks.Console": "6.1.1", - "Serilog.Sinks.Debug": "3.0.0", - "Serilog.Sinks.File": "7.0.0" - } - }, - "Serilog.Sinks.Console": { - "type": "CentralTransitive", - "requested": "[6.1.1, )", - "resolved": "6.1.1", - "contentHash": "8jbqgjUyZlfCuSTaJk6lOca465OndqOz3KZP6Cryt/IqZYybyBu7GP0fE/AXBzrrQB3EBmQntBFAvMVz1COvAA==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "Serilog.Sinks.File": { - "type": "CentralTransitive", - "requested": "[7.0.0, )", - "resolved": "7.0.0", - "contentHash": "fKL7mXv7qaiNBUC71ssvn/dU0k9t0o45+qm2XgKAlSt19xF+ijjxyA3R6HmCgfKEKwfcfkwWjayuQtRueZFkYw==", - "dependencies": { - "Serilog": "4.2.0" - } - }, - "Serilog.Sinks.OpenTelemetry": { - "type": "CentralTransitive", - "requested": "[4.2.0, )", - "resolved": "4.2.0", - "contentHash": "PzMCyE5G19tjr5IZEi5qg+4UU5QrxBEoBEMu/hhYybTrGKXqUDiSGWKZNUDBgelaVKqLADlsmlJVyKce5SyPrg==", - "dependencies": { - "Google.Protobuf": "3.30.1", - "Grpc.Net.Client": "2.70.0", - "Serilog": "4.2.0" - } - }, - "System.Security.Cryptography.ProtectedData": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "kxR4O/8o32eNN3m4qbLe3UifYqeyEpallCyVAsLvL5ZFJVyT3JCb+9du/WHfC09VyJh1Q+p/Gd4+AwM7Rz4acg==" - }, - "TimeZoneNames": { - "type": "CentralTransitive", - "requested": "[7.0.0, )", - "resolved": "7.0.0", - "contentHash": "zc1sIJZMDH7pPO1Gqte9yjMEFSILShTRNuxVxnNdiZP4NGGSi3ZGe2OSrW2phjzM/QKe3pKOwUXfQmJMjDBOKQ==", - "dependencies": { - "TimeZoneConverter": "7.0.0" - } - } - } - } +{ + "version": 2, + "dependencies": { + "net10.0": { + "bunit": { + "type": "Direct", + "requested": "[2.6.2, )", + "resolved": "2.6.2", + "contentHash": "Xx7EFwuSLurxSP/NqzBQWYFsPWPtBOHChDZZwji3bRYhZSnqVfyI4eXmUTMoj3Wb9Xtm1bPoDZTdDQEzgoQDUg==", + "dependencies": { + "AngleSharp": "1.4.0", + "AngleSharp.Css": "1.0.0-beta.157", + "AngleSharp.Diffing": "1.1.1", + "Microsoft.AspNetCore.Components": "10.0.0", + "Microsoft.AspNetCore.Components.Authorization": "10.0.0", + "Microsoft.AspNetCore.Components.Web": "10.0.0", + "Microsoft.AspNetCore.Components.WebAssembly": "10.0.0", + "Microsoft.AspNetCore.Components.WebAssembly.Authentication": "10.0.0", + "Microsoft.Extensions.Caching.Memory": "10.0.0", + "Microsoft.Extensions.Localization.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0" + } + }, + "Microsoft.EntityFrameworkCore.InMemory": { + "type": "Direct", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "zz4THzlDOrJ7fKU2YUOzQFs2LJ9DgOSr5xFXcDdoD59el73MTQLtQQOAJxQ94F4XDegyL9+2sePSQGdcU25ZxQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.IdentityModel.JsonWebTokens": { + "type": "Direct", + "requested": "[8.17.0, )", + "resolved": "8.17.0", + "contentHash": "JbFZ3OVwtvqcqgBL0cIkhRYbIP7u9GIUYLOgbNqLWtBtZY8tGDpdGyXMzUVX0gVHq1ovuHsKZrkVv+ziHEnBHw==", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "8.17.0" + } + }, + "MSTest": { + "type": "Direct", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "2bk47yg7HcHRyf6Zf0XgCZicTVTQj4D5lonYTO7lWMxCQB+x66VrQNc2dADBfzthKXfHaA37m8i+VV5h6SbWiA==", + "dependencies": { + "MSTest.TestAdapter": "4.1.0", + "MSTest.TestFramework": "4.1.0", + "Microsoft.NET.Test.Sdk": "18.0.1", + "Microsoft.Testing.Extensions.CodeCoverage": "18.4.1", + "Microsoft.Testing.Extensions.TrxReport": "2.1.0" + } + }, + "AngleSharp": { + "type": "Transitive", + "resolved": "1.4.0", + "contentHash": "6ph8mpaQx0KL0COYRt0kI8MB9gSp1PtKijKMhJU//+aVFgKAJLKDesG/+26JSaVCOrHNgPf12wpfoyRcMYOeXg==" + }, + "AngleSharp.Css": { + "type": "Transitive", + "resolved": "1.0.0-beta.157", + "contentHash": "yptHmuGt2tzNGCeD7Orh6HRs4j7MH3IUhI+FM640OlmSwWRMd1yjKnicVcNG147IdF/tjOvgqtvpTU0pH6wVpA==", + "dependencies": { + "AngleSharp": "[1.0.0, 2.0.0)" + } + }, + "AngleSharp.Diffing": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "Uzz5895TpRyMA4t8GExmq4TxXqi3+bZTgb3kJgH+tdwrSuo9CO6Dlmv+Oqyhb2pNRfbnReLUzhlHAuT7c+3jSg==", + "dependencies": { + "AngleSharp": "1.1.2", + "AngleSharp.Css": "1.0.0-beta.144" + } + }, + "BouncyCastle.Cryptography": { + "type": "Transitive", + "resolved": "2.6.2", + "contentHash": "7oWOcvnntmMKNzDLsdxAYqApt+AjpRpP2CShjMfIa3umZ42UQMvH0tl1qAliYPNYO6vTdcGMqnRrCPmsfzTI1w==" + }, + "Grpc.Core.Api": { + "type": "Transitive", + "resolved": "2.76.0", + "contentHash": "cSxC2tdnFdXXuBgIn1pjc4YBx7LXTCp4M0qn+SMBS35VWZY+cEQYLWTBDDhdBH1HzU7BV+ncVZlniGQHMpRJKQ==" + }, + "Grpc.Net.Common": { + "type": "Transitive", + "resolved": "2.76.0", + "contentHash": "bZpiMVYgvpB44/wBh1RotrkqC7bg2FOasLri2GhR3hMKyzsiTxCoDE49YjPrJeFc4RW0wS8u+EInI09sjxVFRA==", + "dependencies": { + "Grpc.Core.Api": "2.76.0" + } + }, + "Microsoft.ApplicationInsights": { + "type": "Transitive", + "resolved": "2.23.0", + "contentHash": "nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw==" + }, + "Microsoft.AspNetCore.Components": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "ljLBmYTPkIe/WhOn/y3kpMCJ4A/xg76H/SRm9XkoOBqlM96Ntcbr+WFJqV/0bEqjaUqQYIMITPnJXrVJ242cWQ==", + "dependencies": { + "Microsoft.AspNetCore.Authorization": "10.0.0", + "Microsoft.AspNetCore.Components.Analyzers": "10.0.0" + } + }, + "Microsoft.AspNetCore.Components.Analyzers": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "5j9dQ/U51yLLKo8hKJOU7uTPppPsjLTua0PFzRotaePcmz7M9W7pM69pBXDEgkBfGD1tp2ufH0zHRHkwg1ikDg==" + }, + "Microsoft.AspNetCore.Components.Authorization": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "z/4yuTmCD1A3x++Dr8s2H3yD6nUGglqxvjsPL65BUynJlEO0ZaOaI0TIQ58+OyU8IAw98eprHlezix8UyRMqKg==", + "dependencies": { + "Microsoft.AspNetCore.Authorization": "10.0.0", + "Microsoft.AspNetCore.Components": "10.0.0" + } + }, + "Microsoft.AspNetCore.Components.Forms": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "5kMwH8DqYFfUpyMNv+IzIoDHxR8fHTPKeJeFNAyjY5tMxo3yyM7ezmuYNcVt9QJ+6K2soHQjBnCvFs8yNd3UGQ==", + "dependencies": { + "Microsoft.AspNetCore.Components": "10.0.0", + "Microsoft.Extensions.Validation": "10.0.0" + } + }, + "Microsoft.AspNetCore.Components.Web": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "TAv9+cOrU27YPKuHE7AlG2UBWtTWivvcDHmfdN2yngzQFtas+3p2IBDAF6odNfOJiW3Cs1lHwzqLAoNw5Sc59Q==", + "dependencies": { + "Microsoft.AspNetCore.Components": "10.0.0", + "Microsoft.AspNetCore.Components.Forms": "10.0.0", + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Primitives": "10.0.0", + "Microsoft.JSInterop": "10.0.0" + } + }, + "Microsoft.AspNetCore.Components.WebAssembly": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "ens4WMX0PBTHxRDYpS3i//VktXi+24my01qXI0P91q2rDMHcIKRN0/sdE+4kB1ZwJpHec9vYxDmmnw/JOcXCwQ==", + "dependencies": { + "Microsoft.AspNetCore.Components.Web": "10.0.0", + "Microsoft.Extensions.Configuration.Binder": "10.0.0", + "Microsoft.Extensions.Configuration.Json": "10.0.0", + "Microsoft.Extensions.Logging": "10.0.0", + "Microsoft.JSInterop.WebAssembly": "10.0.0" + } + }, + "Microsoft.AspNetCore.Components.WebAssembly.Authentication": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "u4cqo7IdawVPAPHDBlyiTmEodGom6m/OnqXnioz71ASA2l7pAebLed5vaErtsGT9Ud0Z1Nudthy+3FBk0BmHjQ==", + "dependencies": { + "Microsoft.AspNetCore.Components.Authorization": "10.0.0", + "Microsoft.AspNetCore.Components.Web": "10.0.0" + } + }, + "Microsoft.AspNetCore.Connections.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "ruD0Lb3Dy8Fn1KJlyILl5WxOwPdhUQzEAYpDEEe9MqMRusC6OqU7PtmwTXP4rqEKOw8yyFq8MjCnOLb1+24T6Q==", + "dependencies": { + "Microsoft.Extensions.Features": "10.0.5" + } + }, + "Microsoft.AspNetCore.Cryptography.Internal": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "kFUpNRYySfqNLuQKGMKZ2mK8b86R1zizlc9QB6R/Ess0rSkrA8pRNCMSFm+DqUnNfm5G3FWjsYIJOKYyhkHeig==" + }, + "Microsoft.AspNetCore.Cryptography.KeyDerivation": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "NkWUZYkL6wavYY2wMZgnODzsyTOZhcRxP/DJvZlBbWEJViukdyuIqtdTzltODyjsc3MjEvxmbPDDk2KgGv6tMA==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.Internal": "10.0.5" + } + }, + "Microsoft.AspNetCore.Http.Connections.Client": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "z4Iny9wOi2D3h/YVPELyb2aMakFQIwiAeCHl1T8giCoUHgql+HtvKKldGxQC6/g4niuLBipi7O6zQT34O9/Rcw==", + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Common": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.AspNetCore.Http.Connections.Common": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "4zUdCDERnuMPhiKnxeu6aWUlXQFzfeswcCy8WEC+YkJkrHi8ZRHESBT50jR5HBCu4cyBJeDbuDjfh2wHTIczUw==", + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.5" + } + }, + "Microsoft.AspNetCore.Metadata": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "nXVB1K4RzyhDHKYWLiq3+aJopJZKO5ojFqHV9PZ74fe4VWM/8itoouqsd2KIqSooIwQ13UDNlPQfN2rWr7hc2A==" + }, + "Microsoft.AspNetCore.SignalR.Client.Core": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "A2+sApRgxWSxzD0Q5eRqElPPzqIqOljYCzt/mtC/KIjlTNLvVWoQn2amNnX3o7BrbaSdI1yeFcyKVal7zVgcSw==", + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.5", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.5", + "Microsoft.Extensions.DependencyInjection": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.AspNetCore.SignalR.Common": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "+aUsWJhnJlGzaSs8lipFVH6XuKYJwnJWdK200KO2NvbJFRQSauYynSLQhzhf3mpGGFoQ1U5Z7MVxJiC1ANCOYA==", + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "bFLLtvuZ0ATBhuK5ZqbJW+pG9XWu+u+yh+sR90ra57uMgR2WEQtMAnQPK94/pQOzbQAzm1vNr4bP/JqMs+OftQ==", + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.5" + } + }, + "Microsoft.CodeCoverage": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "O+utSr97NAJowIQT/OVp3Lh9QgW/wALVTP4RG1m2AfFP4IyJmJz0ZBmFJUsRQiAPgq6IRC0t8AAzsiPIsaUDEA==" + }, + "Microsoft.DiaSymReader": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "QcZrCETsBJqy/vQpFtJc+jSXQ0K5sucQ6NUFbTNVHD4vfZZOwjZ/3sBzczkC4DityhD3AVO/+K/+9ioLs1AgRA==" + }, + "Microsoft.EntityFrameworkCore.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "32c58Rnm47Qvhimawf67KO9PytgPz3QoWye7Abapt0Yocw/JnzMiSNj/pRoIKyn8Jxypkv86zxKD4Q/zNTc0Ag==" + }, + "Microsoft.EntityFrameworkCore.Analyzers": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "ipC4u1VojgEfoIZhtbS2Sx5IluJTP/Jf1hz3yGsxGBgSukYY/CquI6rAjxn5H58CZgVn36qcuPPtNMwZ0AUzMg==" + }, + "Microsoft.EntityFrameworkCore.Relational": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "uxmFjZEAB/KbsgWFSS4lLqkEHCfXxB2x0UcbiO4e5fCRpFFeTMSx/me6009nYJLu5IKlDwO1POh++P6RilFTDw==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore.Sqlite.Core": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "rVH43bcUyZiMn0SnCpVnvFpl4PFxT4GwmuVVLcT4JL0NtzuHY9ymKV+Llb5cjuJ+6+gEl4eixy2rE8nxOPcBSA==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "10.0.5", + "Microsoft.EntityFrameworkCore.Relational": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyModel": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "bovnONzrr/JIc+w343i857rJEb7cQH9UzEjbV5n67agWBEYICGQb8xiqYz5+GoFXp6mKEKLwYCQGttMU1p5yXQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.4", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.4", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" + } + }, + "Microsoft.Extensions.Caching.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "k/QDdQ94/0Shi0KfU+e12m73jfQo+3JpErTtgpZfsCIqkvdEEO0XIx6R+iTbN55rNPaNhOqNY4/sB+jZ8XxVPw==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "jUEXmkBUPdOS/MP9areK/sbKhdklq9+tEhvwfxGalZVnmyLUO5rrheNNutUBtvbZ7J8ECkG7/r2KXi/IFC06cA==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Compliance.Abstractions": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "4WkknDbVrHNf+S6fwSt1OAXlGJ/G/QrtJlqx4aNzOLmeT3GRyxpGLZn+Q3UV+RMRAF6FfsijEZBg2ZAW8bTAkg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", + "Microsoft.Extensions.ObjectPool": "10.0.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "8Rx5sqg04FttxrumyG6bmoRuFRgYzK6IVwF1i0/o0cXfKBdDeVpJejKHtJCMjyg9E/DNMVqpqOGe/tCT5gYvVA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "99Z4rjyXopb1MIazDSPcvwYCUdYNO01Cf1GUs2WUjIFAbkGmwzj2vPa2k+3pheJRV+YgNd2QqRKHAri0oBAU4Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "OhTr0O79dP49734lLTqVveivVX9sDXxbI/8vjELAZTHXqoN90mdpgTAgwicJED42iaHMCcZcK6Bj+8wNyBikaw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Physical": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "v1SVsowG6YE1YnHVGmLWz57YTRCQRx9pH5ebIESXfm5isI9gA3QaMyg/oMTzPpXYZwSAVDzYItGJKfmV+pqXkQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "iVMtq9eRvzyhx8949EGT0OCYJfXi737SbRVzWXE5GrOgGj5AaZ9eUuxA/BSUfmOMALKn/g8KfFaNQw0eiB3lyA==" + }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "ksmUG2SFTcXzYdyoLOdeSM/qYLRGN6qbbSzYVkwMK9xsctfR1hYkUayeOpFCMd7L+QSlYX72mK9wxwdgQxyS4g==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.4" + } + }, + "Microsoft.Extensions.DependencyModel": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "xA4kkL+QS6KCAOKz/O0oquHs44Ob8J7zpBCNt3wjkBWDg5aCqfwG8rWWLsg5V86AM0sB849g9JjPjIdksTCIKg==" + }, + "Microsoft.Extensions.Diagnostics": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "vAJHd4yOpmKoK+jBuYV7a3y+Ab9U4ARCc29b6qvMy276RgJFw9LFs0DdsPqOL3ahwzyrX7tM+i4cCxU/RX0qAg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.5" + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "/nYGrpa9/0BZofrVpBbbj+Ns8ZesiPE0V/KxsuHgDgHQopIzN54nRaQGSuvPw16/kI9sW1Zox5yyAPqvf0Jz6A==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "1/hQmONMWxRTKXuN0pQShQN9QsqIRTS1G4fdmKW0O9phuVZjyzIROQD9Fbfwyn2t+yvP8SzjatGAPX4jDRfgHg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4" + } + }, + "Microsoft.Extensions.Features": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "yvfER/YMzYyQHbnLW+zGM3CNqG+4RpM6SIJzaHei0v+xPxMhigckqY4kvucmUBeOfs49HCZu+WxrgfXSbsDkgg==" + }, + "Microsoft.Extensions.FileProviders.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "nCBmCx0Xemlu65ZiWMcXbvfvtznKxf4/YYKF9R28QkqdI9lTikedGqzJ28/xmdGGsxUnsP5/3TQGpiPwVjK0dA==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.FileProviders.Embedded": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "DQzkbLFNfwmjxErAnWyZTTyBd4cMo6vmGteM4Ayedhk5Pccm2VuKoeKcOZjJG1T+dYK6lMCNk2L7Ftl7dLhgqg==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.FileProviders.Physical": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "dMu5kUPSfol1Rqhmr6nWPSmbFjDe9w6bkoKithG17bWTZA0UyKirTatM5mqYUN3mGpNA0MorlusIoVTh6J7o5g==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.FileSystemGlobbing": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.FileSystemGlobbing": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "mOE3ARusNQR0a5x8YOcnUbfyyXGqoAWQtEc7qFOfNJgruDWQLo39Re+3/Lzj5pLPFuFYj8hN4dgKzaSQDKiOCw==" + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "ybx2QcCWROCnUCbSj/IyHXn1c58brjjHzTTbueKgBl/qHsWk69mu25mjQ3oaMsO1I0+EcS6AhVuhIopL2q3IDw==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.4", + "Microsoft.Extensions.Telemetry": "10.4.0" + } + }, + "Microsoft.Extensions.Identity.Core": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "ew2Xob+HFvJvM7BelIrUIbGeVMO2q1A6gsZEsI8N/v0ddSv7qbvvY68mH16XzvlsqydqD3ct5ioQHsiEUDSNkg==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.KeyDerivation": "10.0.5", + "Microsoft.Extensions.Diagnostics": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Identity.Stores": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "St8g+4xGLUhfSzTlHSLtCv7kh/tppvFab5x0kFIOsWryf1ffK2Ux+JIg01v5Yf27g2iQLCFEmW5hG5DDZL1HLA==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.5", + "Microsoft.Extensions.Identity.Core": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.Extensions.Localization.Abstractions": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "+gopxHC5+vWE61Qq2i+aFblxjSiS4UyjUG5kpfXodWbeBVwXPeP66s8uAi0LPAwnhS5jInmYJNRFYUMn+sdtKg==" + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "+XTMKQyDWg4ODoNHU/BN3BaI1jhGO7VCS+BnzT/4IauiG6y2iPAte7MyD7rHKS+hNP0TkFkjrae8DFjDUxtcxg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Logging.Configuration": { + "type": "Transitive", + "resolved": "10.0.4", + "contentHash": "XPXoOpUnWEh0pV7Vl2DK2wj47y73Krhrve5OkPrvGIWdZ4U2r47WO8hEdv+wKn65Kh4pmDdiWm7Ibo5pZX+vig==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.4", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", + "Microsoft.Extensions.Configuration.Binder": "10.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", + "Microsoft.Extensions.Logging": "10.0.4", + "Microsoft.Extensions.Logging.Abstractions": "10.0.4", + "Microsoft.Extensions.Options": "10.0.4", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" + } + }, + "Microsoft.Extensions.ObjectPool": { + "type": "Transitive", + "resolved": "10.0.4", + "contentHash": "2pufIFOgNl/yWTOoIC9XgBnO9VxgfAjdRCnVwpE2+ICfcroGnjuEAGzJ5lTdZeAe0HvA31vMBWXtcmGB7TOq3g==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "MDaQMdUplw0AIRhWWmbLA7yQEXaLIHb+9CTroTiNS8OlI0LMXS4LCxtopqauiqGCWlRgJ+xyraVD8t6veRAFbw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "BB9uUW3+6Rxu1R97OB1H/13lUF8P2+H1+eDhpZlK30kDh/6E4EKHBUqTp+ilXQmZLzsRErxON8aBSR6WpUKJdg==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.Binder": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "/HUHJ0tw/LQvD0DZrz50eQy/3z7PfX7WWEaXnjKTV9/TNdcgFlNTZGo49QhS7PTmhDqMyHRMqAXSBxLh0vso4g==" + }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "41CCbJJPsDWU6NsmKfANHkfT/+KCBlZZqQ1eBoQhhW0xqGCiWmUlMdi2BoaM/GcwKHX5WiQL/IESROmgk0Owfw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics": "10.0.4", + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.4.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4", + "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.ServiceDiscovery.Abstractions": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "HkBb7cdi27tkQiQw1anQFbXe+A3pjRwDKgVbd/DD9fMAO2X9abK0FEyM/tNVXjW3lwOWl2tF+Xij/DqI6i+JTg==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", + "Microsoft.Extensions.Configuration.Binder": "10.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", + "Microsoft.Extensions.Features": "10.0.4", + "Microsoft.Extensions.Logging.Abstractions": "10.0.4", + "Microsoft.Extensions.Options": "10.0.4", + "Microsoft.Extensions.Primitives": "10.0.4" + } + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "AbHleTzdpGPjA6RpOjKVHEYx7SoBRnJ2bwAbbPa3aGB7HiVwBmeTJhBGhtIBiuIW0VpKDS8x+bV5iWqpBRIf4w==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.4.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.4.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.4", + "Microsoft.Extensions.ObjectPool": "10.0.4", + "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0" + } + }, + "Microsoft.Extensions.Telemetry.Abstractions": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "3b2uVa4voJfLLg39BPCKQS0ZgnpEZFkKf7YmnMVlM5FQJYBPOuePIQdnEK1/Oxd+w3GscxGYuE7IMOXDwixZtQ==", + "dependencies": { + "Microsoft.Extensions.Compliance.Abstractions": "10.4.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.4", + "Microsoft.Extensions.ObjectPool": "10.0.4", + "Microsoft.Extensions.Options": "10.0.4" + } + }, + "Microsoft.Extensions.Validation": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "viIKcmaf1akdhx77c+dLkODvhL+HyonHNpBsicndoi47zvbSeHJEWPOk188NnFCh+dCUz7Icld1jPMbS5E2fqw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.17.0", + "contentHash": "6NrxQGcZg6IunkN8K2F0UVMavNpfCjbjjjON7PYcL8FwI8aULKUreiHsRX/yaA8j3XsTJnQKUYpoQk5gBjULZw==" + }, + "Microsoft.IdentityModel.Logging": { + "type": "Transitive", + "resolved": "8.17.0", + "contentHash": "w1vjfri0BWqW7RkSZY3ZsqekNfIJJg5BQSFs2j+a+pCXOVrkezmJcn74pT3djwjXJh71577C6wJQgNc2UPz30w==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.17.0" + } + }, + "Microsoft.JSInterop": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "Qfs4KtmfMUQ/BtD4jdt753kiAa7frm1QVms8UHiFArOokoXBkBOOKE2N5APdt3BlAdTSFJNiuDFfgDzVq/3EZg==" + }, + "Microsoft.JSInterop.WebAssembly": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "j0lrmG+7X4OZh75IzOX00nkwAEjXSgt2Ul6kjwmVkAOBzd8JC1Q/yJ/fC4jWcIXe4h22881Qq1o46p/TnSNaRQ==", + "dependencies": { + "Microsoft.JSInterop": "10.0.0" + } + }, + "Microsoft.NET.Test.Sdk": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "WNpu6vI2rA0pXY4r7NKxCN16XRWl5uHu6qjuyVLoDo6oYEggIQefrMjkRuibQHm/NslIUNCcKftvoWAN80MSAg==", + "dependencies": { + "Microsoft.CodeCoverage": "18.0.1", + "Microsoft.TestPlatform.TestHost": "18.0.1" + } + }, + "Microsoft.Testing.Extensions.CodeCoverage": { + "type": "Transitive", + "resolved": "18.4.1", + "contentHash": "l1VZM9dg9s76L5D288ipAT4HRYDJ6Vxh8wX20gfS9VnpueedRfN4/aGNn4oA1g6pwq2WSM3Ci7IoSSGPiqu+WQ==", + "dependencies": { + "Microsoft.DiaSymReader": "2.0.0", + "Microsoft.Extensions.DependencyModel": "8.0.2", + "Microsoft.Testing.Platform": "2.0.2" + } + }, + "Microsoft.Testing.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "5TwgTx2u7k9Al/xbZ18QXq4Hdy2xewkVTI6K3sk+jY2ykqUkIKNuj7rFu3GOV5KnEUkevhw6eZcyZs77STHJIA==", + "dependencies": { + "Microsoft.ApplicationInsights": "2.23.0", + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Extensions.TrxReport": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "cXmP225WcMLLOSrW8xekaNhfzdBwXX3cbXbE5qSzmLbK0KZe3z8rAObKj70FWiPPPzm2W22x0ZW93gsmAfK6Mg==", + "dependencies": { + "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Extensions.TrxReport.Abstractions": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "D8xmIJYQFJ6D49Rx5/vPrkZZxb338Jkew+eSqZLBfBiWKw4QZKy3i1BOXiLfz0lOmaNErwDz/YWRojCdNl+B9Q==", + "dependencies": { + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Extensions.VSTestBridge": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "bNRIEA2YoGr+Y+7LHdA7i1U80+7BAdf4K4Qh4Kx6eKkoBK/NV7QpoMg+GWPP0/eqAFzuUmUOIPVZ87Oo0Vyxmw==", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "18.0.1", + "Microsoft.Testing.Extensions.Telemetry": "2.1.0", + "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Platform": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "aHkjNTGIA+Zbdw6RJgSFrbDrCjO0CgqpElqYcvkRSeUhBv2bKarnvU3ep786U7UqrPlArT/B7VmImRibJD0Zrg==" + }, + "Microsoft.Testing.Platform.MSBuild": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "UpfPebXQtHGrWz21+YLHmJSm+5zsuPE9U9pfdCtoB+67g75fDmWlNgpkH2ZmdVhSwkjNIed9Icg8Iu63z2ei5Q==", + "dependencies": { + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.TestPlatform.ObjectModel": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "qT/mwMcLF9BieRkzOBPL2qCopl8hQu6A1P7JWAoj/FMu5i9vds/7cjbJ/LLtaiwWevWLAeD5v5wjQJ/l6jvhWQ==" + }, + "Microsoft.TestPlatform.TestHost": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "uDJKAEjFTaa2wHdWlfo6ektyoh+WD4/Eesrwb4FpBFKsLGehhACVnwwTI4qD3FrIlIEPlxdXg3SyrYRIcO+RRQ==", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "18.0.1", + "Newtonsoft.Json": "13.0.3" + } + }, + "Microsoft.Win32.SystemEvents": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==" + }, + "MimeKit": { + "type": "Transitive", + "resolved": "4.15.1", + "contentHash": "cxCcQhD0zhboFoG136jJuJtQjNRDJ+BxBm3f2vWn+53bff/CRo+K1mAkWjsW4Wuyy5O22F40MdMG2nRzQu1cJw==", + "dependencies": { + "BouncyCastle.Cryptography": "2.6.2", + "System.Security.Cryptography.Pkcs": "10.0.0" + } + }, + "MSTest.Analyzers": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "4ElL/aqomiUInr090VN4udqz46AuszXLrifHkLrgj0zb7na8eAoyUQt3BwDLTcGd1bSkmk3SfD02rZtKU+ZiqQ==" + }, + "MSTest.TestAdapter": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "bRW1Hftwq0XbcVExcAbj4YAfSZDRAziL0mygDkPBvaUe2nSsWFQIatze5lHVjPFJMvSFgWnItku4pguIy5FowQ==", + "dependencies": { + "MSTest.TestFramework": "4.1.0", + "Microsoft.Testing.Extensions.VSTestBridge": "2.1.0", + "Microsoft.Testing.Platform.MSBuild": "2.1.0" + } + }, + "MSTest.TestFramework": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "BzpvsK+CRbk6khwY62h+7HfYzIxtJXyPv9tOI9T90cy5CVy+WI1JkN4ZaNL4Dobqb6dywSwabLTIbPZKpdrr+A==", + "dependencies": { + "MSTest.Analyzers": "4.1.0" + } + }, + "Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" + }, + "Npgsql": { + "type": "Transitive", + "resolved": "10.0.2", + "contentHash": "q5RfBI+wywJSFUNDE1L4ZbHEHCFTblo8Uf6A6oe4feOUFYiUQXyAf9GBh5qEZpvJaHiEbpBPkQumjEhXCJxdrg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.0" + } + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.15.1", + "contentHash": "oJCqFTS/9S70TGPoamdGJRvw5hLOn6I/XC4X0npDErl2sHDlAg030ArJkIHIuLFCTO5GWqj1uDhsZNjO36xMxg==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.1" + } + }, + "OpenTelemetry.Api": { + "type": "Transitive", + "resolved": "1.15.1", + "contentHash": "+LJP0YBrysh4kPCRZhEyTUTcd+FFP0NPDvV4AzULBmiInGt6fp+RgBieRhUzVX/yyVEyshg3s82RWFYZJIkeGQ==" + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.15.1", + "contentHash": "aZedpOfXtHmVSWlebxJBeJg2DCdzds86mMowBTS6l+sjwV9LvQuZa0JDU9+S7FQvta4hnauxlCEYplbiDiYGeg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.15.1" + } + }, + "Polly.Core": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" + }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Polly.Core": "8.4.2" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2", + "System.Threading.RateLimiting": "8.0.0" + } + }, + "Serilog": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "+cDryFR0GRhsGOnZSKwaDzRRl4MupvJ42FhCE4zhQRVanX0Jpg6WuCBk59OVhVDPmab1bB+nRykAnykYELA9qQ==" + }, + "Serilog.Extensions.Hosting": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, + "Serilog.Formatting.Compact": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Serilog.Settings.Configuration": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "LNq+ibS1sbhTqPV1FIE69/9AJJbfaOhnaqkzcjFy95o+4U+STsta9mi97f1smgXsWYKICDeGUf8xUGzd/52/uA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "10.0.0", + "Microsoft.Extensions.DependencyModel": "10.0.0", + "Serilog": "4.3.0" + } + }, + "Serilog.Sinks.Debug": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "SQLitePCLRaw.bundle_e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "DC4nA7yWnf4UZdgJDF+9Mus4/cb0Y3Sfgi3gDnAoKNAIBwzkskNAbNbyu+u4atT0ruVlZNJfwZmwiEwE5oz9LQ==", + "dependencies": { + "SQLitePCLRaw.lib.e_sqlite3": "2.1.11", + "SQLitePCLRaw.provider.e_sqlite3": "2.1.11" + } + }, + "SQLitePCLRaw.core": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "PK0GLFkfhZzLQeR3PJf71FmhtHox+U3vcY6ZtswoMjrefkB9k6ErNJEnwXqc5KgXDSjige2XXrezqS39gkpQKA==" + }, + "SQLitePCLRaw.lib.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "Ev2ytaXiOlWZ4b3R67GZBsemTINslLD1DCJr2xiacpn4tbapu0Q4dHEzSvZSMnVWeE5nlObU3VZN2p81q3XOYQ==" + }, + "SQLitePCLRaw.provider.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "Y/0ZkR+r0Cg3DQFuCl1RBnv/tmxpIZRU3HUvelPw6MVaKHwYYR8YNvgs0vuNuXCMvlyJ+Fh88U1D4tah1tt6qw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.11" + } + }, + "System.Drawing.Common": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "NfuoKUiP2nUWwKZN6twGqXioIe1zVD0RIj2t976A+czLHr2nY454RwwXs6JU9Htc6mwqL6Dn/nEL3dpVf2jOhg==", + "dependencies": { + "Microsoft.Win32.SystemEvents": "6.0.0" + } + }, + "System.Security.Cryptography.Pkcs": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "UPWqLSygJlFerRi9XNIuM0a1VC8gHUIufyP24xQ0sc+XimqUAEcjpOz9DhKpyDjH+5B/wO3RpC0KpkEeDj/ddg==" + }, + "System.Threading.RateLimiting": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" + }, + "TimeZoneConverter": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "sFbY65N/5GdsHx7nkdHFHUG+5Ar4W0w6Aks7Y2X+Q4NOTw6XyX2Il7jm+4tPkc//4mA3nG0RdxI8gKgoJitdLw==" + }, + "werkr.common": { + "type": "Project", + "dependencies": { + "Google.Protobuf": "[3.34.1, )", + "Microsoft.AspNetCore.Authorization": "[10.0.5, )", + "Microsoft.Extensions.Configuration.Json": "[10.0.5, )", + "Microsoft.IdentityModel.Tokens": "[8.17.0, )", + "TimeZoneNames": "[7.0.0, )", + "Werkr.Common.Configuration": "[1.0.0, )" + } + }, + "werkr.common.configuration": { + "type": "Project" + }, + "werkr.core": { + "type": "Project", + "dependencies": { + "Grpc.Net.Client": "[2.76.0, )", + "MailKit": "[4.15.1, )", + "Microsoft.Extensions.Hosting.Abstractions": "[10.0.5, )", + "System.Security.Cryptography.ProtectedData": "[10.0.5, )", + "Werkr.Common": "[1.0.0, )", + "Werkr.Data": "[1.0.0, )" + } + }, + "werkr.data": { + "type": "Project", + "dependencies": { + "EFCore.NamingConventions": "[10.0.1, )", + "Microsoft.EntityFrameworkCore": "[10.0.5, )", + "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.5, )", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.1, )", + "Werkr.Common": "[1.0.0, )" + } + }, + "werkr.data.identity": { + "type": "Project", + "dependencies": { + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.5, )", + "Microsoft.AspNetCore.Identity.UI": "[10.0.5, )", + "Werkr.Common": "[1.0.0, )", + "Werkr.Data": "[1.0.0, )" + } + }, + "werkr.server": { + "type": "Project", + "dependencies": { + "Microsoft.AspNetCore.SignalR.Client": "[10.0.5, )", + "Microsoft.Extensions.Http.Resilience": "[10.4.0, )", + "Microsoft.IdentityModel.JsonWebTokens": "[8.17.0, )", + "QRCoder": "[1.7.0, )", + "Serilog.AspNetCore": "[10.0.0, )", + "Serilog.Sinks.Console": "[6.1.1, )", + "Serilog.Sinks.File": "[7.0.0, )", + "Serilog.Sinks.OpenTelemetry": "[4.2.0, )", + "Werkr.Common": "[1.0.0, )", + "Werkr.Data.Identity": "[1.0.0, )", + "Werkr.ServiceDefaults": "[1.0.0, )" + } + }, + "werkr.servicedefaults": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Http.Resilience": "[10.4.0, )", + "Microsoft.Extensions.ServiceDiscovery": "[10.4.0, )", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.15.1, )", + "OpenTelemetry.Extensions.Hosting": "[1.15.1, )", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.15.1, )", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.15.0-beta.1, )", + "OpenTelemetry.Instrumentation.GrpcNetClient": "[1.15.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.15.0, )", + "OpenTelemetry.Instrumentation.Runtime": "[1.15.0, )" + } + }, + "EFCore.NamingConventions": { + "type": "CentralTransitive", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "Xs5k8XfNKPkkQSkGmZkmDI1je0prLTdxse+s8PgTFZxyBrlrTLzTBUTVJtQKSsbvu4y+luAv8DdtO5SALJE++A==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[10.0.1, 11.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.1, 11.0.0)", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1" + } + }, + "Google.Protobuf": { + "type": "CentralTransitive", + "requested": "[3.34.1, )", + "resolved": "3.34.1", + "contentHash": "212vdYxRuVopGE5bess6Jg5oXWyizA6hcLPTI7G+qA4PthQEvfeof3njT+7VSY5v/+O0P22xTydiP5fSJJpGEA==" + }, + "Grpc.Net.Client": { + "type": "CentralTransitive", + "requested": "[2.76.0, )", + "resolved": "2.76.0", + "contentHash": "K1oldmqw2+Gn69nGRzZLhqSiUZwelX1GrBu/cUl9wNf1C0uB61vFS6JcxUUv9P8VoUJhFsmV44JA6lI2EUt4xw==", + "dependencies": { + "Grpc.Net.Common": "2.76.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0" + } + }, + "MailKit": { + "type": "CentralTransitive", + "requested": "[4.15.1, )", + "resolved": "4.15.1", + "contentHash": "4mLbqTbH3ctd0NlukHjVQbU3ZnNDuCtB6ttNZDLPZLWMA2Dr31rh/eCSTqOwDojUX8zfDOVaxstMgJTE9PwZNA==", + "dependencies": { + "MimeKit": "4.15.1" + } + }, + "Microsoft.AspNetCore.Authorization": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "NbFi4wN6fUvZK4AKmixpfx0IvqtVimKEn8ZX28LkzZBVo09YnLbyRrJ1001IVQDLbV+aYpS/cLhVJu5JD0rY5A==", + "dependencies": { + "Microsoft.AspNetCore.Metadata": "10.0.5", + "Microsoft.Extensions.Diagnostics": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "oo1uauTwgcnhYgituZ2nI3wJ8XN9z76ggu2zkOJu1BCfOOsqr+g08Kr4MOiMuXEhwySkpIV+MVoC25hC1288NA==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.5", + "Microsoft.Extensions.Identity.Stores": "10.0.5" + } + }, + "Microsoft.AspNetCore.Identity.UI": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "qzYhpJ4Uxng18hmuKqwqydZaPzItrv9WOwNULJ2ka952TZKlOQkERTSkVO8G/19WiRtoznZatrcRyOvppYRGFA==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Embedded": "10.0.5", + "Microsoft.Extensions.Identity.Stores": "10.0.5" + } + }, + "Microsoft.AspNetCore.SignalR.Client": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "2v+Qi63UGm8hu9RAAfWeim3H9ovnxDiPx2MyLQI8nsWrgP+76Z7oiKj+kpVCR1N5QU9bF94RV0lZ/7OJH1LXUA==", + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Client": "10.0.5", + "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.5" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "jFYXnh7s0RShCw6Vkf+ReGCw+mVi7ISg1YaEzYCJcXnUifmbW+aqvCsRJuSRj2ZuQ+oqetpjxlZtbpMmk5FKqQ==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "9tNBmK3EpYVGRQLiqP+bqK2m+TD0Gv//4vCzR7ZOgl4FWzCFyOpYdIVka13M4kcBdPdSJcs3wbHr3rmzOqbIMA==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "10.0.5", + "Microsoft.EntityFrameworkCore.Analyzers": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore.Sqlite": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "lxeRviglTkkmzYJVJ600yb6gJjnf5za9v7uH+0byuSXTGv7U8cT6hz7qRTmiGSOfLcl86QFdy2BBKaUFd6NQug==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Sqlite.Core": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyModel": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.11", + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "P09QpTHjqHmCLQOTC+WyLkoRNxek4NIvfWt+TnU0etoDUSRxcltyd6+j/ouRbMdLR0j44GqGO+lhI2M4fAHG4g==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.Json": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "brBM/WP0YAUYh2+QqSYVdK8eQHYQTtTEUJXJ+84Zkdo2buGLja9VSrMIhgoeBUU7JBmcskAib8Lb/N83bvxgYQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.FileExtensions": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Hosting.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "+Wb7KAMVZTomwJkQrjuPTe5KBzGod7N8XeG+ScxRlkPOB4sZLG4ccVwjV4Phk5BCJt7uIMnGHVoN6ZMVploX+g==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Http": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "AiFvHYM8nP0wPC7bGPI3NHQlSYSLqjjT7DMJUuuxhd+7pz3O89iu2gdQfgACy5DxsXENiok5i1bMacJL7KR8jA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Diagnostics": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "CentralTransitive", + "requested": "[10.4.0, )", + "resolved": "10.4.0", + "contentHash": "HbkUsPUC7vLy2TaDbdA9aooW64n9yX4sUppRuiJ1cOzzU1FUW+MVEotm6kYVq6AuUI9xwFSBhRFzA03blmk3VA==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.4.0", + "Microsoft.Extensions.ObjectPool": "10.0.4", + "Microsoft.Extensions.Resilience": "10.4.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "9HOdqlDtPptVcmKAjsQ/Nr5Rxfq6FMYLdhvZh1lVmeKR738qeYecQD7+ldooXf+u2KzzR1kafSphWngIM3C6ug==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.ServiceDiscovery": { + "type": "CentralTransitive", + "requested": "[10.4.0, )", + "resolved": "10.4.0", + "contentHash": "RznZAH6L4RNvroECT5JpqfFQJjHTn+8N7+ThSgYutbshkuymFeL/uBIZt1CM8LOdpPPhn4//a5fLUah9/k7ayQ==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.4", + "Microsoft.Extensions.ServiceDiscovery.Abstractions": "10.4.0" + } + }, + "Microsoft.IdentityModel.Tokens": { + "type": "CentralTransitive", + "requested": "[8.17.0, )", + "resolved": "8.17.0", + "contentHash": "teaW35URIV2x78Tzk+dVJiC4M62/9mQoSEoDjDGoEZmcQa3H2rE+XQpm9Tmdo9KK1Lcrnve4zoyLavl69kCFGg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.17.0" + } + }, + "Npgsql.EntityFrameworkCore.PostgreSQL": { + "type": "CentralTransitive", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "P6EwH0Q4xkaA264iNZDqCPhWt8pscfUGxXazDQg4noBfqjoOlk4hKWfvBjF9ZX3R/9JybRmmJfmxr2iBMj0EpA==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", + "Npgsql": "10.0.2" + } + }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "400L64MwDd1s2bj4fFJblo3Hf5rXE3bhJUlOSBcLF6QP1Ln116Eqnwnesxhg2siDxOgHYLjcfCC8ByJTDEpNFQ==", + "dependencies": { + "OpenTelemetry": "1.15.1" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "/mN9I16P8miDSHogFC0OFyPzUvYXibk/rLFLXW3Io50IN+XEQx7E6dSyUdMRdY+NKmOCo/oS5ICXkjdoFrwq2A==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.15.1" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "wXaZTu6LHY8xcbRd6ClcrtjHqGVoGYCcArXEZA3iUjUcYSVYwDGyPU0PdkwTfylxv8JeCCVDQhVb0fT7xBJjGA==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.15.0-beta.1, )", + "resolved": "1.15.0-beta.1", + "contentHash": "N01GzP+r8lpSBiqjRX0/WjSp17r+zk6dKvGKthiASyFzF44lrJo8cA3ihXnw3p4Rnqg1mVjOYy19R6iJ84NTpg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.GrpcNetClient": { + "type": "CentralTransitive", + "requested": "[1.15.0-beta.1, )", + "resolved": "1.15.0-beta.1", + "contentHash": "SBas5+C4kGUqoy8OPpQis+QIgJ7/aaJl4H3oLzHCJnZLCb8TXZmQL2/r753RXXJUH8oIeLIzdW+EXgujSy+cpQ==", + "dependencies": { + "OpenTelemetry": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.15.0, )", + "resolved": "1.15.0", + "contentHash": "uToc7bUp8IEdb0ny9mKsL6FrrYelINPzxxiSShJgOf4XmQc4Azww6S5RjRj24YhsOn2a1MABOrxfVTZXtDk4Eg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.15.0, )", + "resolved": "1.15.0", + "contentHash": "OOvpqR/j2Pb6+tWhHNODIbSJ53Or/MDtTiXEyrsWI02K2lLAgvBFcxUOrHggS/8015cYR3AdSaXv6NZrkz5yQA==", + "dependencies": { + "OpenTelemetry.Api": "[1.15.0, 2.0.0)" + } + }, + "QRCoder": { + "type": "CentralTransitive", + "requested": "[1.7.0, )", + "resolved": "1.7.0", + "contentHash": "6R3hQkayihGIDjp3F1nLRDBWG+nqahGyOY2+fH4Rll16Vad67oaUUfHkOiMWKiJFnGh+PIGDfUos+0R9m54O1g==", + "dependencies": { + "System.Drawing.Common": "6.0.0" + } + }, + "Serilog.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.0.0, )", + "resolved": "10.0.0", + "contentHash": "a/cNa1mY4On1oJlfGG1wAvxjp5g7OEzk/Jf/nm7NF9cWoE7KlZw1GldrifUBWm9oKibHkR7Lg/l5jy3y7ACR8w==", + "dependencies": { + "Serilog": "4.3.0", + "Serilog.Extensions.Hosting": "10.0.0", + "Serilog.Formatting.Compact": "3.0.0", + "Serilog.Settings.Configuration": "10.0.0", + "Serilog.Sinks.Console": "6.1.1", + "Serilog.Sinks.Debug": "3.0.0", + "Serilog.Sinks.File": "7.0.0" + } + }, + "Serilog.Sinks.Console": { + "type": "CentralTransitive", + "requested": "[6.1.1, )", + "resolved": "6.1.1", + "contentHash": "8jbqgjUyZlfCuSTaJk6lOca465OndqOz3KZP6Cryt/IqZYybyBu7GP0fE/AXBzrrQB3EBmQntBFAvMVz1COvAA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Serilog.Sinks.File": { + "type": "CentralTransitive", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "fKL7mXv7qaiNBUC71ssvn/dU0k9t0o45+qm2XgKAlSt19xF+ijjxyA3R6HmCgfKEKwfcfkwWjayuQtRueZFkYw==", + "dependencies": { + "Serilog": "4.2.0" + } + }, + "Serilog.Sinks.OpenTelemetry": { + "type": "CentralTransitive", + "requested": "[4.2.0, )", + "resolved": "4.2.0", + "contentHash": "PzMCyE5G19tjr5IZEi5qg+4UU5QrxBEoBEMu/hhYybTrGKXqUDiSGWKZNUDBgelaVKqLADlsmlJVyKce5SyPrg==", + "dependencies": { + "Google.Protobuf": "3.30.1", + "Grpc.Net.Client": "2.70.0", + "Serilog": "4.2.0" + } + }, + "System.Security.Cryptography.ProtectedData": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "kxR4O/8o32eNN3m4qbLe3UifYqeyEpallCyVAsLvL5ZFJVyT3JCb+9du/WHfC09VyJh1Q+p/Gd4+AwM7Rz4acg==" + }, + "TimeZoneNames": { + "type": "CentralTransitive", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "zc1sIJZMDH7pPO1Gqte9yjMEFSILShTRNuxVxnNdiZP4NGGSi3ZGe2OSrW2phjzM/QKe3pKOwUXfQmJMjDBOKQ==", + "dependencies": { + "TimeZoneConverter": "7.0.0" + } + } + } + } } \ No newline at end of file diff --git a/src/Test/Werkr.Tests/ActionRegistryTests.cs b/src/Test/Werkr.Tests/ActionRegistryTests.cs index 90fff31..23d111c 100644 --- a/src/Test/Werkr.Tests/ActionRegistryTests.cs +++ b/src/Test/Werkr.Tests/ActionRegistryTests.cs @@ -17,7 +17,7 @@ public class ActionRegistryTests { /// [TestMethod] public void All_Contains_Thirty_Actions( ) { - Assert.HasCount( 31, ActionRegistry.All ); + Assert.HasCount( 30, ActionRegistry.All ); } /// @@ -56,7 +56,6 @@ public void Actions_Dictionary_Is_Case_Insensitive( ) { [DataRow( "CompressArchive" )] [DataRow( "ExpandArchive" )] [DataRow( "WatchFile" )] - [DataRow( "ForEach" )] [DataRow( "HttpRequest" )] [DataRow( "DownloadFile" )] [DataRow( "TestConnection" )] @@ -323,7 +322,6 @@ public void No_Duplicate_Keys( ) { [DataRow( "Process" )] [DataRow( "ControlFlow" )] [DataRow( "File monitoring" )] - [DataRow( "Iteration" )] [DataRow( "Network" )] [DataRow( "Data" )] [DataRow( "Shell" )] @@ -452,7 +450,6 @@ public void Network_Category_Contains_Six_Actions( ) { [TestMethod] [DataRow( "ControlFlow", "Delay" )] [DataRow( "File monitoring", "WatchFile" )] - [DataRow( "Iteration", "ForEach" )] [DataRow( "Data", "TransformJson" )] public void SingleEntry_Categories_Have_One_Action( string category, string expectedKey ) { IReadOnlyList actions = GetCategoryActions( category ); @@ -671,7 +668,6 @@ public void KeyValueMap_Fields_Have_No_Options( ) { [DataRow( "StopProcess", 3 )] [DataRow( "Delay", 2 )] [DataRow( "WatchFile", 7 )] - [DataRow( "ForEach", 1 )] [DataRow( "HttpRequest", 13 )] [DataRow( "DownloadFile", 5 )] [DataRow( "TestConnection", 5 )] diff --git a/src/Test/Werkr.Tests/ScheduleIntegrationTests.cs b/src/Test/Werkr.Tests/ScheduleIntegrationTests.cs index 28c9a7a..4c8c881 100644 --- a/src/Test/Werkr.Tests/ScheduleIntegrationTests.cs +++ b/src/Test/Werkr.Tests/ScheduleIntegrationTests.cs @@ -15,7 +15,7 @@ public class ScheduleIntegrationTests { /// /// Verifies that the Werkr.Api service returns a healthy response (HTTP 200 OK) /// at the root endpoint when schedule gRPC services are mapped. Sends a GET request to / - /// and asserts that the response status is OK and the body contains "Werkr API", confirming the + /// and asserts that the response status is OK and the body contains "API", confirming the /// API is operational with schedule gRPC endpoints registered. /// [TestMethod] @@ -28,6 +28,6 @@ public async Task ApiServiceReturnsHealthy_WithScheduleGrpcMapped( ) { Assert.AreEqual( HttpStatusCode.OK, response.StatusCode ); string content = await response.Content.ReadAsStringAsync( ct ); - Assert.IsTrue( content.Contains( "Werkr API", StringComparison.OrdinalIgnoreCase ) ); + Assert.IsTrue( content.Contains( "API", StringComparison.OrdinalIgnoreCase ) ); } } diff --git a/src/Test/Werkr.Tests/WebTests.cs b/src/Test/Werkr.Tests/WebTests.cs index abc26fc..66583b6 100644 --- a/src/Test/Werkr.Tests/WebTests.cs +++ b/src/Test/Werkr.Tests/WebTests.cs @@ -16,7 +16,7 @@ public class WebTests { /// /// Verifies that sending an HTTP GET request to the API root endpoint (/) /// returns an status code and that the response body - /// contains the text "Werkr API", confirming the API application is running and serving + /// contains the text "API", confirming the API application is running and serving /// its root resource. The test validates both the HTTP status and the content of the response. /// [TestMethod] @@ -30,7 +30,7 @@ public async Task GetApiRootReturnsOkStatusCode( ) { string content = await response.Content.ReadAsStringAsync( ct ); Assert.IsTrue( - content.Contains( "Werkr API", StringComparison.OrdinalIgnoreCase ), - "API root should return a response containing 'Werkr API'." ); + content.Contains( "API", StringComparison.OrdinalIgnoreCase ), + "API root should return a response containing 'API'." ); } } diff --git a/src/Test/Werkr.Tests/packages.lock.json b/src/Test/Werkr.Tests/packages.lock.json index 474a4cb..210bdf5 100644 --- a/src/Test/Werkr.Tests/packages.lock.json +++ b/src/Test/Werkr.Tests/packages.lock.json @@ -1,1368 +1,1368 @@ -{ - "version": 2, - "dependencies": { - "net10.0": { - "Microsoft.AspNetCore.Mvc.Testing": { - "type": "Direct", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "MfacYQ7jNzj6073YobyoFfXpNmGqrV1UCywTM339DOcYpfalcM4K4heFjV5k3dDkKkWOGWO/DV3hdmVRqFkIxA==", - "dependencies": { - "Microsoft.AspNetCore.TestHost": "10.0.5", - "Microsoft.Extensions.DependencyModel": "10.0.5", - "Microsoft.Extensions.Hosting": "10.0.5" - } - }, - "Microsoft.IdentityModel.JsonWebTokens": { - "type": "Direct", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "prBU72cIP4V8E9fhN+o/YdskTsLeIcnKPbhZf0X6mD7fdxoZqnS/NdEkSr+9Zp+2q7OZBOMfNBKGbTbhXODO4w==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "8.16.0" - } - }, - "MSTest": { - "type": "Direct", - "requested": "[4.1.0, )", - "resolved": "4.1.0", - "contentHash": "2bk47yg7HcHRyf6Zf0XgCZicTVTQj4D5lonYTO7lWMxCQB+x66VrQNc2dADBfzthKXfHaA37m8i+VV5h6SbWiA==", - "dependencies": { - "MSTest.TestAdapter": "4.1.0", - "MSTest.TestFramework": "4.1.0", - "Microsoft.NET.Test.Sdk": "18.0.1", - "Microsoft.Testing.Extensions.CodeCoverage": "18.4.1", - "Microsoft.Testing.Extensions.TrxReport": "2.1.0" - } - }, - "Testcontainers.PostgreSql": { - "type": "Direct", - "requested": "[4.11.0, )", - "resolved": "4.11.0", - "contentHash": "OWGi0Og+qFpr2OPDignA74aJSfUd0nvZOaXNGWXwMJR1BvpdzhCNHQB2h7yLSTb0a8JVmmQQ4mUpHAC9q27NLw==", - "dependencies": { - "Testcontainers": "4.11.0" - } - }, - "BouncyCastle.Cryptography": { - "type": "Transitive", - "resolved": "2.6.2", - "contentHash": "7oWOcvnntmMKNzDLsdxAYqApt+AjpRpP2CShjMfIa3umZ42UQMvH0tl1qAliYPNYO6vTdcGMqnRrCPmsfzTI1w==" - }, - "Docker.DotNet.Enhanced": { - "type": "Transitive", - "resolved": "3.131.1", - "contentHash": "hGLHCNUsQbT2Ab/HUznRnNqYZQs40zInXa3eLwYjeNyfUYbw1pqqDGqcOLl5uGepS8IuigEYakEdAcVT/2ezYg==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.3" - } - }, - "Docker.DotNet.Enhanced.X509": { - "type": "Transitive", - "resolved": "3.131.1", - "contentHash": "8FU7zmttFQzp0xb0EPupxQ0nGtC2cTpukgh3jMxMT8luj5TSDyzIKTnroDpXCjpg9P2fV+6JIvC+IetsMEfyBA==", - "dependencies": { - "Docker.DotNet.Enhanced": "3.131.1" - } - }, - "Grpc.AspNetCore.Server": { - "type": "Transitive", - "resolved": "2.76.0", - "contentHash": "diSC/ZeNdSdxHdYSOpYwuSBBDYpuNVtJQFJfiBB0WrYOQ4lVMmdxuUZJcViahQyo8pCvS3Mueo5lqFxwwMF/iw==", - "dependencies": { - "Grpc.Net.Common": "2.76.0" - } - }, - "Grpc.AspNetCore.Server.ClientFactory": { - "type": "Transitive", - "resolved": "2.76.0", - "contentHash": "y5KGO1GO0N2L/hCCMR05mmoK8j+v8rKvZ+9nothAxKx2Tf2CwV8f4TM5K0GkKfDsp4vrc4lm90MU6E+DeN7YIw==", - "dependencies": { - "Grpc.AspNetCore.Server": "2.76.0", - "Grpc.Net.ClientFactory": "2.76.0" - } - }, - "Grpc.Core.Api": { - "type": "Transitive", - "resolved": "2.76.0", - "contentHash": "cSxC2tdnFdXXuBgIn1pjc4YBx7LXTCp4M0qn+SMBS35VWZY+cEQYLWTBDDhdBH1HzU7BV+ncVZlniGQHMpRJKQ==" - }, - "Grpc.Net.Common": { - "type": "Transitive", - "resolved": "2.76.0", - "contentHash": "bZpiMVYgvpB44/wBh1RotrkqC7bg2FOasLri2GhR3hMKyzsiTxCoDE49YjPrJeFc4RW0wS8u+EInI09sjxVFRA==", - "dependencies": { - "Grpc.Core.Api": "2.76.0" - } - }, - "Microsoft.ApplicationInsights": { - "type": "Transitive", - "resolved": "2.23.0", - "contentHash": "nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw==" - }, - "Microsoft.AspNetCore.Cryptography.Internal": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "kFUpNRYySfqNLuQKGMKZ2mK8b86R1zizlc9QB6R/Ess0rSkrA8pRNCMSFm+DqUnNfm5G3FWjsYIJOKYyhkHeig==" - }, - "Microsoft.AspNetCore.Cryptography.KeyDerivation": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "NkWUZYkL6wavYY2wMZgnODzsyTOZhcRxP/DJvZlBbWEJViukdyuIqtdTzltODyjsc3MjEvxmbPDDk2KgGv6tMA==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.Internal": "10.0.5" - } - }, - "Microsoft.AspNetCore.Metadata": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "nXVB1K4RzyhDHKYWLiq3+aJopJZKO5ojFqHV9PZ74fe4VWM/8itoouqsd2KIqSooIwQ13UDNlPQfN2rWr7hc2A==" - }, - "Microsoft.AspNetCore.TestHost": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "PJEdrZnnhvxIEXzDdvdZ38GvpdaiUfKkZ99kudS8riJwhowFb/Qh26Wjk9smrCWcYdMFQmpN5epGiL4o1s8LYA==" - }, - "Microsoft.CodeCoverage": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "O+utSr97NAJowIQT/OVp3Lh9QgW/wALVTP4RG1m2AfFP4IyJmJz0ZBmFJUsRQiAPgq6IRC0t8AAzsiPIsaUDEA==" - }, - "Microsoft.DiaSymReader": { - "type": "Transitive", - "resolved": "2.0.0", - "contentHash": "QcZrCETsBJqy/vQpFtJc+jSXQ0K5sucQ6NUFbTNVHD4vfZZOwjZ/3sBzczkC4DityhD3AVO/+K/+9ioLs1AgRA==" - }, - "Microsoft.EntityFrameworkCore.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "32c58Rnm47Qvhimawf67KO9PytgPz3QoWye7Abapt0Yocw/JnzMiSNj/pRoIKyn8Jxypkv86zxKD4Q/zNTc0Ag==" - }, - "Microsoft.EntityFrameworkCore.Analyzers": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "ipC4u1VojgEfoIZhtbS2Sx5IluJTP/Jf1hz3yGsxGBgSukYY/CquI6rAjxn5H58CZgVn36qcuPPtNMwZ0AUzMg==" - }, - "Microsoft.EntityFrameworkCore.Relational": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "uxmFjZEAB/KbsgWFSS4lLqkEHCfXxB2x0UcbiO4e5fCRpFFeTMSx/me6009nYJLu5IKlDwO1POh++P6RilFTDw==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5" - } - }, - "Microsoft.EntityFrameworkCore.Sqlite.Core": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "rVH43bcUyZiMn0SnCpVnvFpl4PFxT4GwmuVVLcT4JL0NtzuHY9ymKV+Llb5cjuJ+6+gEl4eixy2rE8nxOPcBSA==", - "dependencies": { - "Microsoft.Data.Sqlite.Core": "10.0.5", - "Microsoft.EntityFrameworkCore.Relational": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyModel": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "SQLitePCLRaw.core": "2.1.11" - } - }, - "Microsoft.Extensions.AmbientMetadata.Application": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "bovnONzrr/JIc+w343i857rJEb7cQH9UzEjbV5n67agWBEYICGQb8xiqYz5+GoFXp6mKEKLwYCQGttMU1p5yXQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.4", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.4", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "k/QDdQ94/0Shi0KfU+e12m73jfQo+3JpErTtgpZfsCIqkvdEEO0XIx6R+iTbN55rNPaNhOqNY4/sB+jZ8XxVPw==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Caching.Memory": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "jUEXmkBUPdOS/MP9areK/sbKhdklq9+tEhvwfxGalZVnmyLUO5rrheNNutUBtvbZ7J8ECkG7/r2KXi/IFC06cA==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "4WkknDbVrHNf+S6fwSt1OAXlGJ/G/QrtJlqx4aNzOLmeT3GRyxpGLZn+Q3UV+RMRAF6FfsijEZBg2ZAW8bTAkg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.ObjectPool": "10.0.4" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "8Rx5sqg04FttxrumyG6bmoRuFRgYzK6IVwF1i0/o0cXfKBdDeVpJejKHtJCMjyg9E/DNMVqpqOGe/tCT5gYvVA==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "99Z4rjyXopb1MIazDSPcvwYCUdYNO01Cf1GUs2WUjIFAbkGmwzj2vPa2k+3pheJRV+YgNd2QqRKHAri0oBAU4Q==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.CommandLine": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "or9fOLopMUTJOQVJ3bou4aD6PwvsiKf4kZC4EE5sRRKSkmh+wfk/LekJXRjAX88X+1JA9zHjDo+5fiQ7z3MY/A==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "tchMGQ+zVTO40np/Zzg2Li/TIR8bksQgg4UVXZa0OzeFCKWnIYtxE2FVs+eSmjPGCjMS2voZbwN/mUcYfpSTuA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "OhTr0O79dP49734lLTqVveivVX9sDXxbI/8vjELAZTHXqoN90mdpgTAgwicJED42iaHMCcZcK6Bj+8wNyBikaw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", - "Microsoft.Extensions.FileProviders.Physical": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.UserSecrets": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "fhdG6UV9lIp70QhNkVyaHciUVq25IPFkczheVJL9bIFvmnJ+Zghaie6dWkDbbVmxZlHl9gj3zTDxMxJs5zNhIA==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Configuration.Json": "10.0.5", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", - "Microsoft.Extensions.FileProviders.Physical": "10.0.5" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "v1SVsowG6YE1YnHVGmLWz57YTRCQRx9pH5ebIESXfm5isI9gA3QaMyg/oMTzPpXYZwSAVDzYItGJKfmV+pqXkQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "iVMtq9eRvzyhx8949EGT0OCYJfXi737SbRVzWXE5GrOgGj5AaZ9eUuxA/BSUfmOMALKn/g8KfFaNQw0eiB3lyA==" - }, - "Microsoft.Extensions.DependencyInjection.AutoActivation": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "ksmUG2SFTcXzYdyoLOdeSM/qYLRGN6qbbSzYVkwMK9xsctfR1hYkUayeOpFCMd7L+QSlYX72mK9wxwdgQxyS4g==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "10.0.4" - } - }, - "Microsoft.Extensions.DependencyModel": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "xA4kkL+QS6KCAOKz/O0oquHs44Ob8J7zpBCNt3wjkBWDg5aCqfwG8rWWLsg5V86AM0sB849g9JjPjIdksTCIKg==" - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "vAJHd4yOpmKoK+jBuYV7a3y+Ab9U4ARCc29b6qvMy276RgJFw9LFs0DdsPqOL3ahwzyrX7tM+i4cCxU/RX0qAg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.5" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "/nYGrpa9/0BZofrVpBbbj+Ns8ZesiPE0V/KxsuHgDgHQopIzN54nRaQGSuvPw16/kI9sW1Zox5yyAPqvf0Jz6A==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "1/hQmONMWxRTKXuN0pQShQN9QsqIRTS1G4fdmKW0O9phuVZjyzIROQD9Fbfwyn2t+yvP8SzjatGAPX4jDRfgHg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4" - } - }, - "Microsoft.Extensions.Features": { - "type": "Transitive", - "resolved": "10.0.4", - "contentHash": "7to+nkZO+g/GiGQOBzAcrr8HcG8dXETI/hg58fJju0jPO9p/GvNLAis8kMPTBdsjfeTfslBrgFX9Yx1KRnKDww==" - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "nCBmCx0Xemlu65ZiWMcXbvfvtznKxf4/YYKF9R28QkqdI9lTikedGqzJ28/xmdGGsxUnsP5/3TQGpiPwVjK0dA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.FileProviders.Embedded": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "DQzkbLFNfwmjxErAnWyZTTyBd4cMo6vmGteM4Ayedhk5Pccm2VuKoeKcOZjJG1T+dYK6lMCNk2L7Ftl7dLhgqg==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.FileProviders.Physical": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "dMu5kUPSfol1Rqhmr6nWPSmbFjDe9w6bkoKithG17bWTZA0UyKirTatM5mqYUN3mGpNA0MorlusIoVTh6J7o5g==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "mOE3ARusNQR0a5x8YOcnUbfyyXGqoAWQtEc7qFOfNJgruDWQLo39Re+3/Lzj5pLPFuFYj8hN4dgKzaSQDKiOCw==" - }, - "Microsoft.Extensions.Hosting": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "8i7e5IBdiKLNqt/+ciWrS8U95Rv5DClaaj7ulkZbimnCi4uREWd+lXzkp3joofFuIPOlAzV4AckxLTIELv2jdg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Configuration.Binder": "10.0.5", - "Microsoft.Extensions.Configuration.CommandLine": "10.0.5", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.5", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.5", - "Microsoft.Extensions.Configuration.Json": "10.0.5", - "Microsoft.Extensions.Configuration.UserSecrets": "10.0.5", - "Microsoft.Extensions.DependencyInjection": "10.0.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Diagnostics": "10.0.5", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", - "Microsoft.Extensions.FileProviders.Physical": "10.0.5", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging.Configuration": "10.0.5", - "Microsoft.Extensions.Logging.Console": "10.0.5", - "Microsoft.Extensions.Logging.Debug": "10.0.5", - "Microsoft.Extensions.Logging.EventLog": "10.0.5", - "Microsoft.Extensions.Logging.EventSource": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.Extensions.Http.Diagnostics": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "ybx2QcCWROCnUCbSj/IyHXn1c58brjjHzTTbueKgBl/qHsWk69mu25mjQ3oaMsO1I0+EcS6AhVuhIopL2q3IDw==", - "dependencies": { - "Microsoft.Extensions.Http": "10.0.4", - "Microsoft.Extensions.Telemetry": "10.4.0" - } - }, - "Microsoft.Extensions.Identity.Core": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "ew2Xob+HFvJvM7BelIrUIbGeVMO2q1A6gsZEsI8N/v0ddSv7qbvvY68mH16XzvlsqydqD3ct5ioQHsiEUDSNkg==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.KeyDerivation": "10.0.5", - "Microsoft.Extensions.Diagnostics": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.Extensions.Identity.Stores": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "St8g+4xGLUhfSzTlHSLtCv7kh/tppvFab5x0kFIOsWryf1ffK2Ux+JIg01v5Yf27g2iQLCFEmW5hG5DDZL1HLA==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.5", - "Microsoft.Extensions.Identity.Core": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5" - } - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "+XTMKQyDWg4ODoNHU/BN3BaI1jhGO7VCS+BnzT/4IauiG6y2iPAte7MyD7rHKS+hNP0TkFkjrae8DFjDUxtcxg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "cSgxsDgfP0+gmVRPVoNHI/KIDavIZxh+CxE6tSLPlYTogqccDnjBFI9CgEsiNuMP6+fiuXUwhhlTz36uUEpwbQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Configuration.Binder": "10.0.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.5" - } - }, - "Microsoft.Extensions.Logging.Console": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "PMs2gha2v24hvH5o5KQem5aNK4mN0BhhCWlMqsg9tzifWKzjeQi2tyPOP/RaWMVvalOhVLcrmoMYPqbnia/epg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging.Configuration": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.Extensions.Logging.EventLog": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "0ezhWYJS4/6KrqQel9JL+Tr4n+4EX2TF5EYiaysBWNNEM2c3Gtj1moD39esfgk8OHblSX+UFjtZ3z0c4i9tRvw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5", - "System.Diagnostics.EventLog": "10.0.5" - } - }, - "Microsoft.Extensions.Logging.EventSource": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "vN+aq1hBFXyYvY5Ow9WyeR66drKQxRZmas4lAjh6QWfryPkjTn1uLtX5AFIxyDaZj78v5TG2sELUyvrXpAPQQw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "10.0.4", - "contentHash": "2pufIFOgNl/yWTOoIC9XgBnO9VxgfAjdRCnVwpE2+ICfcroGnjuEAGzJ5lTdZeAe0HvA31vMBWXtcmGB7TOq3g==" - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "MDaQMdUplw0AIRhWWmbLA7yQEXaLIHb+9CTroTiNS8OlI0LMXS4LCxtopqauiqGCWlRgJ+xyraVD8t6veRAFbw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "BB9uUW3+6Rxu1R97OB1H/13lUF8P2+H1+eDhpZlK30kDh/6E4EKHBUqTp+ilXQmZLzsRErxON8aBSR6WpUKJdg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Configuration.Binder": "10.0.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5", - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "/HUHJ0tw/LQvD0DZrz50eQy/3z7PfX7WWEaXnjKTV9/TNdcgFlNTZGo49QhS7PTmhDqMyHRMqAXSBxLh0vso4g==" - }, - "Microsoft.Extensions.Resilience": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "41CCbJJPsDWU6NsmKfANHkfT/+KCBlZZqQ1eBoQhhW0xqGCiWmUlMdi2BoaM/GcwKHX5WiQL/IESROmgk0Owfw==", - "dependencies": { - "Microsoft.Extensions.Diagnostics": "10.0.4", - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.4.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4", - "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0", - "Polly.Extensions": "8.4.2", - "Polly.RateLimiting": "8.4.2" - } - }, - "Microsoft.Extensions.ServiceDiscovery.Abstractions": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "HkBb7cdi27tkQiQw1anQFbXe+A3pjRwDKgVbd/DD9fMAO2X9abK0FEyM/tNVXjW3lwOWl2tF+Xij/DqI6i+JTg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", - "Microsoft.Extensions.Configuration.Binder": "10.0.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.Features": "10.0.4", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4", - "Microsoft.Extensions.Primitives": "10.0.4" - } - }, - "Microsoft.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "AbHleTzdpGPjA6RpOjKVHEYx7SoBRnJ2bwAbbPa3aGB7HiVwBmeTJhBGhtIBiuIW0VpKDS8x+bV5iWqpBRIf4w==", - "dependencies": { - "Microsoft.Extensions.AmbientMetadata.Application": "10.4.0", - "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.4.0", - "Microsoft.Extensions.Logging.Configuration": "10.0.4", - "Microsoft.Extensions.ObjectPool": "10.0.4", - "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0" - } - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "10.4.0", - "contentHash": "3b2uVa4voJfLLg39BPCKQS0ZgnpEZFkKf7YmnMVlM5FQJYBPOuePIQdnEK1/Oxd+w3GscxGYuE7IMOXDwixZtQ==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "10.4.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.ObjectPool": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4" - } - }, - "Microsoft.IdentityModel.Abstractions": { - "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "gSxKLWRZzBpIsEoeUPkxfywNCCvRvl7hkq146XHPk5vOQc9izSf1I+uL1vh4y2U19QPxd9Z8K/8AdWyxYz2lSg==" - }, - "Microsoft.IdentityModel.Logging": { - "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "MTzXmETkNQPACR7/XCXM1OGM6oU9RkyibqeJRtO9Ndew2LnGjMf9Atqj2VSf4XC27X0FQycUAlzxxEgQMWn2xQ==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.16.0" - } - }, - "Microsoft.IdentityModel.Protocols": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "uA2vpKqU3I2mBBEaeJAWPTjT9v1TZrGWKdgK6G5qJd03CLx83kdiqO9cmiK8/n1erkHzFBwU/RphP83aAe3i3g==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "8.0.1" - } - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "AQDbfpL+yzuuGhO/mQhKNsp44pm5Jv8/BI4KiFXR7beVGZoSH35zMV3PrmcfvSTsyI6qrcR898NzUauD6SRigg==", - "dependencies": { - "Microsoft.IdentityModel.Protocols": "8.0.1", - "System.IdentityModel.Tokens.Jwt": "8.0.1" - } - }, - "Microsoft.NET.Test.Sdk": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "WNpu6vI2rA0pXY4r7NKxCN16XRWl5uHu6qjuyVLoDo6oYEggIQefrMjkRuibQHm/NslIUNCcKftvoWAN80MSAg==", - "dependencies": { - "Microsoft.CodeCoverage": "18.0.1", - "Microsoft.TestPlatform.TestHost": "18.0.1" - } - }, - "Microsoft.OpenApi": { - "type": "Transitive", - "resolved": "2.0.0", - "contentHash": "GGYLfzV/G/ct80OZ45JxnWP7NvMX1BCugn/lX7TH5o0lcVaviavsLMTxmFV2AybXWjbi3h6FF1vgZiTK6PXndw==" - }, - "Microsoft.Testing.Extensions.CodeCoverage": { - "type": "Transitive", - "resolved": "18.4.1", - "contentHash": "l1VZM9dg9s76L5D288ipAT4HRYDJ6Vxh8wX20gfS9VnpueedRfN4/aGNn4oA1g6pwq2WSM3Ci7IoSSGPiqu+WQ==", - "dependencies": { - "Microsoft.DiaSymReader": "2.0.0", - "Microsoft.Extensions.DependencyModel": "8.0.2", - "Microsoft.Testing.Platform": "2.0.2" - } - }, - "Microsoft.Testing.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "5TwgTx2u7k9Al/xbZ18QXq4Hdy2xewkVTI6K3sk+jY2ykqUkIKNuj7rFu3GOV5KnEUkevhw6eZcyZs77STHJIA==", - "dependencies": { - "Microsoft.ApplicationInsights": "2.23.0", - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Extensions.TrxReport": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "cXmP225WcMLLOSrW8xekaNhfzdBwXX3cbXbE5qSzmLbK0KZe3z8rAObKj70FWiPPPzm2W22x0ZW93gsmAfK6Mg==", - "dependencies": { - "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Extensions.TrxReport.Abstractions": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "D8xmIJYQFJ6D49Rx5/vPrkZZxb338Jkew+eSqZLBfBiWKw4QZKy3i1BOXiLfz0lOmaNErwDz/YWRojCdNl+B9Q==", - "dependencies": { - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Extensions.VSTestBridge": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "bNRIEA2YoGr+Y+7LHdA7i1U80+7BAdf4K4Qh4Kx6eKkoBK/NV7QpoMg+GWPP0/eqAFzuUmUOIPVZ87Oo0Vyxmw==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "18.0.1", - "Microsoft.Testing.Extensions.Telemetry": "2.1.0", - "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.Testing.Platform": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "aHkjNTGIA+Zbdw6RJgSFrbDrCjO0CgqpElqYcvkRSeUhBv2bKarnvU3ep786U7UqrPlArT/B7VmImRibJD0Zrg==" - }, - "Microsoft.Testing.Platform.MSBuild": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "UpfPebXQtHGrWz21+YLHmJSm+5zsuPE9U9pfdCtoB+67g75fDmWlNgpkH2ZmdVhSwkjNIed9Icg8Iu63z2ei5Q==", - "dependencies": { - "Microsoft.Testing.Platform": "2.1.0" - } - }, - "Microsoft.TestPlatform.ObjectModel": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "qT/mwMcLF9BieRkzOBPL2qCopl8hQu6A1P7JWAoj/FMu5i9vds/7cjbJ/LLtaiwWevWLAeD5v5wjQJ/l6jvhWQ==" - }, - "Microsoft.TestPlatform.TestHost": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "uDJKAEjFTaa2wHdWlfo6ektyoh+WD4/Eesrwb4FpBFKsLGehhACVnwwTI4qD3FrIlIEPlxdXg3SyrYRIcO+RRQ==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "18.0.1", - "Newtonsoft.Json": "13.0.3" - } - }, - "MimeKit": { - "type": "Transitive", - "resolved": "4.15.1", - "contentHash": "cxCcQhD0zhboFoG136jJuJtQjNRDJ+BxBm3f2vWn+53bff/CRo+K1mAkWjsW4Wuyy5O22F40MdMG2nRzQu1cJw==", - "dependencies": { - "BouncyCastle.Cryptography": "2.6.2", - "System.Security.Cryptography.Pkcs": "10.0.0" - } - }, - "MSTest.Analyzers": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "4ElL/aqomiUInr090VN4udqz46AuszXLrifHkLrgj0zb7na8eAoyUQt3BwDLTcGd1bSkmk3SfD02rZtKU+ZiqQ==" - }, - "MSTest.TestAdapter": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "bRW1Hftwq0XbcVExcAbj4YAfSZDRAziL0mygDkPBvaUe2nSsWFQIatze5lHVjPFJMvSFgWnItku4pguIy5FowQ==", - "dependencies": { - "MSTest.TestFramework": "4.1.0", - "Microsoft.Testing.Extensions.VSTestBridge": "2.1.0", - "Microsoft.Testing.Platform.MSBuild": "2.1.0" - } - }, - "MSTest.TestFramework": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "BzpvsK+CRbk6khwY62h+7HfYzIxtJXyPv9tOI9T90cy5CVy+WI1JkN4ZaNL4Dobqb6dywSwabLTIbPZKpdrr+A==", - "dependencies": { - "MSTest.Analyzers": "4.1.0" - } - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.3", - "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" - }, - "Npgsql": { - "type": "Transitive", - "resolved": "10.0.2", - "contentHash": "q5RfBI+wywJSFUNDE1L4ZbHEHCFTblo8Uf6A6oe4feOUFYiUQXyAf9GBh5qEZpvJaHiEbpBPkQumjEhXCJxdrg==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0" - } - }, - "OpenTelemetry": { - "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "7mS/oZFF8S6xyqGQfMU1btp0nXJQUPWV535Vp/XMLYwRAUv36xQN+U4vufWBF1+z4HnRTOwuFHtUSGnHbyN6FQ==", - "dependencies": { - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", - "Microsoft.Extensions.Logging.Configuration": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.0" - } - }, - "OpenTelemetry.Api": { - "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "vk5OGdf6K9kQScCWo3bRjhDWCv6Pqw92IpX4dlARZ8B1WL7/2NGTDtCkkw42eQf7UdwyoHKzVvMH/PtL8d6z7w==" - }, - "OpenTelemetry.Api.ProviderBuilderExtensions": { - "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "OnuSUlRpGvowkOzGFQfy+KZFu0cITfKfh2IYJJiZskxVJiOuexwOOuvfDAgpJdmTzVWAHjYdz2shcHZaJ06UjQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "OpenTelemetry.Api": "1.15.0" - } - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" - }, - "Polly.Extensions": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Polly.Core": "8.4.2" - } - }, - "Polly.RateLimiting": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", - "dependencies": { - "Polly.Core": "8.4.2", - "System.Threading.RateLimiting": "8.0.0" - } - }, - "Serilog": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "+cDryFR0GRhsGOnZSKwaDzRRl4MupvJ42FhCE4zhQRVanX0Jpg6WuCBk59OVhVDPmab1bB+nRykAnykYELA9qQ==" - }, - "Serilog.Extensions.Hosting": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Serilog": "4.3.0", - "Serilog.Extensions.Logging": "10.0.0" - } - }, - "Serilog.Extensions.Logging": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", - "dependencies": { - "Microsoft.Extensions.Logging": "10.0.0", - "Serilog": "4.2.0" - } - }, - "Serilog.Formatting.Compact": { - "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "Serilog.Settings.Configuration": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "LNq+ibS1sbhTqPV1FIE69/9AJJbfaOhnaqkzcjFy95o+4U+STsta9mi97f1smgXsWYKICDeGUf8xUGzd/52/uA==", - "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "10.0.0", - "Microsoft.Extensions.DependencyModel": "10.0.0", - "Serilog": "4.3.0" - } - }, - "Serilog.Sinks.Debug": { - "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "SharpZipLib": { - "type": "Transitive", - "resolved": "1.4.2", - "contentHash": "yjj+3zgz8zgXpiiC3ZdF/iyTBbz2fFvMxZFEBPUcwZjIvXOf37Ylm+K58hqMfIBt5JgU/Z2uoUS67JmTLe973A==" - }, - "SQLitePCLRaw.bundle_e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "DC4nA7yWnf4UZdgJDF+9Mus4/cb0Y3Sfgi3gDnAoKNAIBwzkskNAbNbyu+u4atT0ruVlZNJfwZmwiEwE5oz9LQ==", - "dependencies": { - "SQLitePCLRaw.lib.e_sqlite3": "2.1.11", - "SQLitePCLRaw.provider.e_sqlite3": "2.1.11" - } - }, - "SQLitePCLRaw.core": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "PK0GLFkfhZzLQeR3PJf71FmhtHox+U3vcY6ZtswoMjrefkB9k6ErNJEnwXqc5KgXDSjige2XXrezqS39gkpQKA==" - }, - "SQLitePCLRaw.lib.e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "Ev2ytaXiOlWZ4b3R67GZBsemTINslLD1DCJr2xiacpn4tbapu0Q4dHEzSvZSMnVWeE5nlObU3VZN2p81q3XOYQ==" - }, - "SQLitePCLRaw.provider.e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.11", - "contentHash": "Y/0ZkR+r0Cg3DQFuCl1RBnv/tmxpIZRU3HUvelPw6MVaKHwYYR8YNvgs0vuNuXCMvlyJ+Fh88U1D4tah1tt6qw==", - "dependencies": { - "SQLitePCLRaw.core": "2.1.11" - } - }, - "SSH.NET": { - "type": "Transitive", - "resolved": "2025.1.0", - "contentHash": "jrnbtf0ItVaXAe6jE8X/kSLa6uC+0C+7W1vepcnRQB/rD88qy4IxG7Lf1FIbWmkoc4iVXv0pKrz+Wc6J4ngmHw==", - "dependencies": { - "BouncyCastle.Cryptography": "2.6.2", - "Microsoft.Extensions.Logging.Abstractions": "8.0.3" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.5", - "contentHash": "wugvy+pBVzjQEnRs9wMTWwoaeNFX3hsaHeVHFDIvJSWXp7wfmNWu3mxAwBIE6pyW+g6+rHa1Of5fTzb0QVqUTA==" - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "UPWqLSygJlFerRi9XNIuM0a1VC8gHUIufyP24xQ0sc+XimqUAEcjpOz9DhKpyDjH+5B/wO3RpC0KpkEeDj/ddg==" - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "Testcontainers": { - "type": "Transitive", - "resolved": "4.11.0", - "contentHash": "9pBNaK9Ra3GVnr5h6gaDJOBH0txA5G3Juho5WANPuyu38l5xyr2lCvf11oA5/uSd+Lh4Wtng34nKp3nMiea02g==", - "dependencies": { - "Docker.DotNet.Enhanced": "3.131.1", - "Docker.DotNet.Enhanced.X509": "3.131.1", - "Microsoft.Extensions.Logging.Abstractions": "8.0.3", - "SSH.NET": "2025.1.0", - "SharpZipLib": "1.4.2" - } - }, - "TimeZoneConverter": { - "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "sFbY65N/5GdsHx7nkdHFHUG+5Ar4W0w6Aks7Y2X+Q4NOTw6XyX2Il7jm+4tPkc//4mA3nG0RdxI8gKgoJitdLw==" - }, - "werkr.api": { - "type": "Project", - "dependencies": { - "Grpc.AspNetCore": "[2.76.0, )", - "Microsoft.AspNetCore.Authentication.JwtBearer": "[10.0.5, )", - "Microsoft.AspNetCore.OpenApi": "[10.0.5, )", - "Microsoft.IdentityModel.JsonWebTokens": "[8.16.0, )", - "Serilog.AspNetCore": "[10.0.0, )", - "Serilog.Sinks.Console": "[6.1.1, )", - "Serilog.Sinks.File": "[7.0.0, )", - "Serilog.Sinks.OpenTelemetry": "[4.2.0, )", - "Werkr.Common": "[1.0.0, )", - "Werkr.Core": "[1.0.0, )", - "Werkr.Data": "[1.0.0, )", - "Werkr.ServiceDefaults": "[1.0.0, )" - } - }, - "werkr.common": { - "type": "Project", - "dependencies": { - "Google.Protobuf": "[3.34.1, )", - "Microsoft.AspNetCore.Authorization": "[10.0.5, )", - "Microsoft.Extensions.Configuration.Json": "[10.0.5, )", - "Microsoft.IdentityModel.Tokens": "[8.16.0, )", - "TimeZoneNames": "[7.0.0, )", - "Werkr.Common.Configuration": "[1.0.0, )" - } - }, - "werkr.common.configuration": { - "type": "Project" - }, - "werkr.core": { - "type": "Project", - "dependencies": { - "Grpc.Net.Client": "[2.76.0, )", - "MailKit": "[4.15.1, )", - "Microsoft.Extensions.Hosting.Abstractions": "[10.0.5, )", - "System.Security.Cryptography.ProtectedData": "[10.0.5, )", - "Werkr.Common": "[1.0.0, )", - "Werkr.Data": "[1.0.0, )" - } - }, - "werkr.data": { - "type": "Project", - "dependencies": { - "EFCore.NamingConventions": "[10.0.1, )", - "Microsoft.EntityFrameworkCore": "[10.0.5, )", - "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.5, )", - "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.1, )", - "Werkr.Common": "[1.0.0, )" - } - }, - "werkr.data.identity": { - "type": "Project", - "dependencies": { - "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.5, )", - "Microsoft.AspNetCore.Identity.UI": "[10.0.5, )", - "Werkr.Common": "[1.0.0, )", - "Werkr.Data": "[1.0.0, )" - } - }, - "werkr.servicedefaults": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Http.Resilience": "[10.4.0, )", - "Microsoft.Extensions.ServiceDiscovery": "[10.4.0, )", - "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.15.0, )", - "OpenTelemetry.Extensions.Hosting": "[1.15.0, )", - "OpenTelemetry.Instrumentation.AspNetCore": "[1.15.1, )", - "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.15.0-beta.1, )", - "OpenTelemetry.Instrumentation.GrpcNetClient": "[1.15.0-beta.1, )", - "OpenTelemetry.Instrumentation.Http": "[1.15.0, )", - "OpenTelemetry.Instrumentation.Runtime": "[1.15.0, )" - } - }, - "EFCore.NamingConventions": { - "type": "CentralTransitive", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "Xs5k8XfNKPkkQSkGmZkmDI1je0prLTdxse+s8PgTFZxyBrlrTLzTBUTVJtQKSsbvu4y+luAv8DdtO5SALJE++A==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "[10.0.1, 11.0.0)", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.1, 11.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1" - } - }, - "Google.Protobuf": { - "type": "CentralTransitive", - "requested": "[3.34.1, )", - "resolved": "3.34.1", - "contentHash": "212vdYxRuVopGE5bess6Jg5oXWyizA6hcLPTI7G+qA4PthQEvfeof3njT+7VSY5v/+O0P22xTydiP5fSJJpGEA==" - }, - "Grpc.AspNetCore": { - "type": "CentralTransitive", - "requested": "[2.76.0, )", - "resolved": "2.76.0", - "contentHash": "LyXMmpN2Ba0TE35SOLSKbGqIYtJuhc1UgiaGfoW1X8KJERV70QI5KGW+ckEY7MrXoFWN/uWo4B70siVhbDmCgQ==", - "dependencies": { - "Google.Protobuf": "3.31.1", - "Grpc.AspNetCore.Server.ClientFactory": "2.76.0", - "Grpc.Tools": "2.76.0" - } - }, - "Grpc.Net.Client": { - "type": "CentralTransitive", - "requested": "[2.76.0, )", - "resolved": "2.76.0", - "contentHash": "K1oldmqw2+Gn69nGRzZLhqSiUZwelX1GrBu/cUl9wNf1C0uB61vFS6JcxUUv9P8VoUJhFsmV44JA6lI2EUt4xw==", - "dependencies": { - "Grpc.Net.Common": "2.76.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.0" - } - }, - "Grpc.Net.ClientFactory": { - "type": "CentralTransitive", - "requested": "[2.76.0, )", - "resolved": "2.76.0", - "contentHash": "XI+kO69L9AV8B9N0UQOmH911r6MOEp9huHiavEsY56DJYuzJ9KAxNGy37dpV6CLbgCaN2uKmpOsZ9Pao6bmpVQ==", - "dependencies": { - "Grpc.Net.Client": "2.76.0", - "Microsoft.Extensions.Http": "8.0.0" - } - }, - "Grpc.Tools": { - "type": "CentralTransitive", - "requested": "[2.78.0, )", - "resolved": "2.78.0", - "contentHash": "6jPG2gHon+w2PczW8jjrCRnW/g9eEfCdd7aK6mDooptWtuPsV3ZxAwKKEx7LGEDVoT4c2SViRl8Yu3L1XiWIIg==" - }, - "MailKit": { - "type": "CentralTransitive", - "requested": "[4.15.1, )", - "resolved": "4.15.1", - "contentHash": "4mLbqTbH3ctd0NlukHjVQbU3ZnNDuCtB6ttNZDLPZLWMA2Dr31rh/eCSTqOwDojUX8zfDOVaxstMgJTE9PwZNA==", - "dependencies": { - "MimeKit": "4.15.1" - } - }, - "Microsoft.AspNetCore.Authentication.JwtBearer": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "fZzXogChrwQ/SfifQJgeW7AtR8hUv5+LH9oLWjm5OqfnVt3N8MwcMHHMdawvqqdjP79lIZgetnSpj77BLsSI1g==", - "dependencies": { - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.0.1" - } - }, - "Microsoft.AspNetCore.Authorization": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "NbFi4wN6fUvZK4AKmixpfx0IvqtVimKEn8ZX28LkzZBVo09YnLbyRrJ1001IVQDLbV+aYpS/cLhVJu5JD0rY5A==", - "dependencies": { - "Microsoft.AspNetCore.Metadata": "10.0.5", - "Microsoft.Extensions.Diagnostics": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5", - "Microsoft.Extensions.Options": "10.0.5" - } - }, - "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "oo1uauTwgcnhYgituZ2nI3wJ8XN9z76ggu2zkOJu1BCfOOsqr+g08Kr4MOiMuXEhwySkpIV+MVoC25hC1288NA==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Relational": "10.0.5", - "Microsoft.Extensions.Identity.Stores": "10.0.5" - } - }, - "Microsoft.AspNetCore.Identity.UI": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "qzYhpJ4Uxng18hmuKqwqydZaPzItrv9WOwNULJ2ka952TZKlOQkERTSkVO8G/19WiRtoznZatrcRyOvppYRGFA==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Embedded": "10.0.5", - "Microsoft.Extensions.Identity.Stores": "10.0.5" - } - }, - "Microsoft.AspNetCore.OpenApi": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "vTcxIfOPyfFbYk1g8YcXJfkMnlEWVkSnnjxcZLy60zgwiHMRf2SnZR+9E4HlpwKxgE3yfKMOti8J6WfKuKsw6w==", - "dependencies": { - "Microsoft.OpenApi": "2.0.0" - } - }, - "Microsoft.Data.Sqlite.Core": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "jFYXnh7s0RShCw6Vkf+ReGCw+mVi7ISg1YaEzYCJcXnUifmbW+aqvCsRJuSRj2ZuQ+oqetpjxlZtbpMmk5FKqQ==", - "dependencies": { - "SQLitePCLRaw.core": "2.1.11" - } - }, - "Microsoft.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "9tNBmK3EpYVGRQLiqP+bqK2m+TD0Gv//4vCzR7ZOgl4FWzCFyOpYdIVka13M4kcBdPdSJcs3wbHr3rmzOqbIMA==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "10.0.5", - "Microsoft.EntityFrameworkCore.Analyzers": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5" - } - }, - "Microsoft.EntityFrameworkCore.Sqlite": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "lxeRviglTkkmzYJVJ600yb6gJjnf5za9v7uH+0byuSXTGv7U8cT6hz7qRTmiGSOfLcl86QFdy2BBKaUFd6NQug==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Sqlite.Core": "10.0.5", - "Microsoft.Extensions.Caching.Memory": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyModel": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "SQLitePCLRaw.bundle_e_sqlite3": "2.1.11", - "SQLitePCLRaw.core": "2.1.11" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "P09QpTHjqHmCLQOTC+WyLkoRNxek4NIvfWt+TnU0etoDUSRxcltyd6+j/ouRbMdLR0j44GqGO+lhI2M4fAHG4g==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.5" - } - }, - "Microsoft.Extensions.Configuration.Json": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "brBM/WP0YAUYh2+QqSYVdK8eQHYQTtTEUJXJ+84Zkdo2buGLja9VSrMIhgoeBUU7JBmcskAib8Lb/N83bvxgYQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.5", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "+Wb7KAMVZTomwJkQrjuPTe5KBzGod7N8XeG+ScxRlkPOB4sZLG4ccVwjV4Phk5BCJt7uIMnGHVoN6ZMVploX+g==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Http": { - "type": "CentralTransitive", - "requested": "[10.0.4, )", - "resolved": "10.0.4", - "contentHash": "QRbs+A+WfiGTnV9KFNfWlF+My5euQNZnsvdVMulwRN6C/tEPaF+ZlQfedHoNvFHKLwjQMmqwm4z+TSO9eLvRQw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.Diagnostics": "10.0.4", - "Microsoft.Extensions.Logging": "10.0.4", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4" - } - }, - "Microsoft.Extensions.Http.Resilience": { - "type": "CentralTransitive", - "requested": "[10.4.0, )", - "resolved": "10.4.0", - "contentHash": "HbkUsPUC7vLy2TaDbdA9aooW64n9yX4sUppRuiJ1cOzzU1FUW+MVEotm6kYVq6AuUI9xwFSBhRFzA03blmk3VA==", - "dependencies": { - "Microsoft.Extensions.Http.Diagnostics": "10.4.0", - "Microsoft.Extensions.ObjectPool": "10.0.4", - "Microsoft.Extensions.Resilience": "10.4.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "9HOdqlDtPptVcmKAjsQ/Nr5Rxfq6FMYLdhvZh1lVmeKR738qeYecQD7+ldooXf+u2KzzR1kafSphWngIM3C6ug==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.Logging.Debug": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "/VacEkBQ02A8PBXSa6YpbIXCuisYy6JJr62/+ANJDZE+RMBfZMcXJXLfr/LpyLE6pgdp17Wxlt7e7R9zvkwZ3Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", - "Microsoft.Extensions.Logging": "10.0.5", - "Microsoft.Extensions.Logging.Abstractions": "10.0.5" - } - }, - "Microsoft.Extensions.ServiceDiscovery": { - "type": "CentralTransitive", - "requested": "[10.4.0, )", - "resolved": "10.4.0", - "contentHash": "RznZAH6L4RNvroECT5JpqfFQJjHTn+8N7+ThSgYutbshkuymFeL/uBIZt1CM8LOdpPPhn4//a5fLUah9/k7ayQ==", - "dependencies": { - "Microsoft.Extensions.Http": "10.0.4", - "Microsoft.Extensions.ServiceDiscovery.Abstractions": "10.4.0" - } - }, - "Microsoft.IdentityModel.Tokens": { - "type": "CentralTransitive", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "rtViGJcGsN7WcfUNErwNeQgjuU5cJNl6FDQsfi9TncwO+Epzn0FTfBsg3YuFW1Q0Ch/KPxaVdjLw3/+5Z5ceFQ==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.IdentityModel.Logging": "8.16.0" - } - }, - "Npgsql.EntityFrameworkCore.PostgreSQL": { - "type": "CentralTransitive", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "P6EwH0Q4xkaA264iNZDqCPhWt8pscfUGxXazDQg4noBfqjoOlk4hKWfvBjF9ZX3R/9JybRmmJfmxr2iBMj0EpA==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", - "Npgsql": "10.0.2" - } - }, - "OpenTelemetry.Exporter.OpenTelemetryProtocol": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "VH8ANc/js9IRvfYt0Q2UaAxNCOWm+IU+vWrtoH7pfx4oWPVdISUt+9uWfBCFMWZg5WzQip5dhslyDjeyZXXfSQ==", - "dependencies": { - "OpenTelemetry": "1.15.0" - } - }, - "OpenTelemetry.Extensions.Hosting": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "RixjKyB1pbYGhWdvPto4KJs+exdQknJsnjUO9WszdLles5Vcd0EYzxPNJdwmLjYfP+Jfbr4B5nktM4ZgeHSWtg==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", - "OpenTelemetry": "1.15.0" - } - }, - "OpenTelemetry.Instrumentation.AspNetCore": { - "type": "CentralTransitive", - "requested": "[1.15.1, )", - "resolved": "1.15.1", - "contentHash": "wXaZTu6LHY8xcbRd6ClcrtjHqGVoGYCcArXEZA3iUjUcYSVYwDGyPU0PdkwTfylxv8JeCCVDQhVb0fT7xBJjGA==", - "dependencies": { - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[1.15.0-beta.1, )", - "resolved": "1.15.0-beta.1", - "contentHash": "N01GzP+r8lpSBiqjRX0/WjSp17r+zk6dKvGKthiASyFzF44lrJo8cA3ihXnw3p4Rnqg1mVjOYy19R6iJ84NTpg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.GrpcNetClient": { - "type": "CentralTransitive", - "requested": "[1.15.0-beta.1, )", - "resolved": "1.15.0-beta.1", - "contentHash": "SBas5+C4kGUqoy8OPpQis+QIgJ7/aaJl4H3oLzHCJnZLCb8TXZmQL2/r753RXXJUH8oIeLIzdW+EXgujSy+cpQ==", - "dependencies": { - "OpenTelemetry": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.Http": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "uToc7bUp8IEdb0ny9mKsL6FrrYelINPzxxiSShJgOf4XmQc4Azww6S5RjRj24YhsOn2a1MABOrxfVTZXtDk4Eg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.Runtime": { - "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "OOvpqR/j2Pb6+tWhHNODIbSJ53Or/MDtTiXEyrsWI02K2lLAgvBFcxUOrHggS/8015cYR3AdSaXv6NZrkz5yQA==", - "dependencies": { - "OpenTelemetry.Api": "[1.15.0, 2.0.0)" - } - }, - "Serilog.AspNetCore": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "a/cNa1mY4On1oJlfGG1wAvxjp5g7OEzk/Jf/nm7NF9cWoE7KlZw1GldrifUBWm9oKibHkR7Lg/l5jy3y7ACR8w==", - "dependencies": { - "Serilog": "4.3.0", - "Serilog.Extensions.Hosting": "10.0.0", - "Serilog.Formatting.Compact": "3.0.0", - "Serilog.Settings.Configuration": "10.0.0", - "Serilog.Sinks.Console": "6.1.1", - "Serilog.Sinks.Debug": "3.0.0", - "Serilog.Sinks.File": "7.0.0" - } - }, - "Serilog.Sinks.Console": { - "type": "CentralTransitive", - "requested": "[6.1.1, )", - "resolved": "6.1.1", - "contentHash": "8jbqgjUyZlfCuSTaJk6lOca465OndqOz3KZP6Cryt/IqZYybyBu7GP0fE/AXBzrrQB3EBmQntBFAvMVz1COvAA==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "Serilog.Sinks.File": { - "type": "CentralTransitive", - "requested": "[7.0.0, )", - "resolved": "7.0.0", - "contentHash": "fKL7mXv7qaiNBUC71ssvn/dU0k9t0o45+qm2XgKAlSt19xF+ijjxyA3R6HmCgfKEKwfcfkwWjayuQtRueZFkYw==", - "dependencies": { - "Serilog": "4.2.0" - } - }, - "Serilog.Sinks.OpenTelemetry": { - "type": "CentralTransitive", - "requested": "[4.2.0, )", - "resolved": "4.2.0", - "contentHash": "PzMCyE5G19tjr5IZEi5qg+4UU5QrxBEoBEMu/hhYybTrGKXqUDiSGWKZNUDBgelaVKqLADlsmlJVyKce5SyPrg==", - "dependencies": { - "Google.Protobuf": "3.30.1", - "Grpc.Net.Client": "2.70.0", - "Serilog": "4.2.0" - } - }, - "System.IdentityModel.Tokens.Jwt": { - "type": "CentralTransitive", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", - "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", - "Microsoft.IdentityModel.Tokens": "8.16.0" - } - }, - "System.Security.Cryptography.ProtectedData": { - "type": "CentralTransitive", - "requested": "[10.0.5, )", - "resolved": "10.0.5", - "contentHash": "kxR4O/8o32eNN3m4qbLe3UifYqeyEpallCyVAsLvL5ZFJVyT3JCb+9du/WHfC09VyJh1Q+p/Gd4+AwM7Rz4acg==" - }, - "TimeZoneNames": { - "type": "CentralTransitive", - "requested": "[7.0.0, )", - "resolved": "7.0.0", - "contentHash": "zc1sIJZMDH7pPO1Gqte9yjMEFSILShTRNuxVxnNdiZP4NGGSi3ZGe2OSrW2phjzM/QKe3pKOwUXfQmJMjDBOKQ==", - "dependencies": { - "TimeZoneConverter": "7.0.0" - } - } - } - } +{ + "version": 2, + "dependencies": { + "net10.0": { + "Microsoft.AspNetCore.Mvc.Testing": { + "type": "Direct", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "MfacYQ7jNzj6073YobyoFfXpNmGqrV1UCywTM339DOcYpfalcM4K4heFjV5k3dDkKkWOGWO/DV3hdmVRqFkIxA==", + "dependencies": { + "Microsoft.AspNetCore.TestHost": "10.0.5", + "Microsoft.Extensions.DependencyModel": "10.0.5", + "Microsoft.Extensions.Hosting": "10.0.5" + } + }, + "Microsoft.IdentityModel.JsonWebTokens": { + "type": "Direct", + "requested": "[8.17.0, )", + "resolved": "8.17.0", + "contentHash": "JbFZ3OVwtvqcqgBL0cIkhRYbIP7u9GIUYLOgbNqLWtBtZY8tGDpdGyXMzUVX0gVHq1ovuHsKZrkVv+ziHEnBHw==", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "8.17.0" + } + }, + "MSTest": { + "type": "Direct", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "2bk47yg7HcHRyf6Zf0XgCZicTVTQj4D5lonYTO7lWMxCQB+x66VrQNc2dADBfzthKXfHaA37m8i+VV5h6SbWiA==", + "dependencies": { + "MSTest.TestAdapter": "4.1.0", + "MSTest.TestFramework": "4.1.0", + "Microsoft.NET.Test.Sdk": "18.0.1", + "Microsoft.Testing.Extensions.CodeCoverage": "18.4.1", + "Microsoft.Testing.Extensions.TrxReport": "2.1.0" + } + }, + "Testcontainers.PostgreSql": { + "type": "Direct", + "requested": "[4.11.0, )", + "resolved": "4.11.0", + "contentHash": "OWGi0Og+qFpr2OPDignA74aJSfUd0nvZOaXNGWXwMJR1BvpdzhCNHQB2h7yLSTb0a8JVmmQQ4mUpHAC9q27NLw==", + "dependencies": { + "Testcontainers": "4.11.0" + } + }, + "BouncyCastle.Cryptography": { + "type": "Transitive", + "resolved": "2.6.2", + "contentHash": "7oWOcvnntmMKNzDLsdxAYqApt+AjpRpP2CShjMfIa3umZ42UQMvH0tl1qAliYPNYO6vTdcGMqnRrCPmsfzTI1w==" + }, + "Docker.DotNet.Enhanced": { + "type": "Transitive", + "resolved": "3.131.1", + "contentHash": "hGLHCNUsQbT2Ab/HUznRnNqYZQs40zInXa3eLwYjeNyfUYbw1pqqDGqcOLl5uGepS8IuigEYakEdAcVT/2ezYg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3" + } + }, + "Docker.DotNet.Enhanced.X509": { + "type": "Transitive", + "resolved": "3.131.1", + "contentHash": "8FU7zmttFQzp0xb0EPupxQ0nGtC2cTpukgh3jMxMT8luj5TSDyzIKTnroDpXCjpg9P2fV+6JIvC+IetsMEfyBA==", + "dependencies": { + "Docker.DotNet.Enhanced": "3.131.1" + } + }, + "Grpc.AspNetCore.Server": { + "type": "Transitive", + "resolved": "2.76.0", + "contentHash": "diSC/ZeNdSdxHdYSOpYwuSBBDYpuNVtJQFJfiBB0WrYOQ4lVMmdxuUZJcViahQyo8pCvS3Mueo5lqFxwwMF/iw==", + "dependencies": { + "Grpc.Net.Common": "2.76.0" + } + }, + "Grpc.AspNetCore.Server.ClientFactory": { + "type": "Transitive", + "resolved": "2.76.0", + "contentHash": "y5KGO1GO0N2L/hCCMR05mmoK8j+v8rKvZ+9nothAxKx2Tf2CwV8f4TM5K0GkKfDsp4vrc4lm90MU6E+DeN7YIw==", + "dependencies": { + "Grpc.AspNetCore.Server": "2.76.0", + "Grpc.Net.ClientFactory": "2.76.0" + } + }, + "Grpc.Core.Api": { + "type": "Transitive", + "resolved": "2.76.0", + "contentHash": "cSxC2tdnFdXXuBgIn1pjc4YBx7LXTCp4M0qn+SMBS35VWZY+cEQYLWTBDDhdBH1HzU7BV+ncVZlniGQHMpRJKQ==" + }, + "Grpc.Net.Common": { + "type": "Transitive", + "resolved": "2.76.0", + "contentHash": "bZpiMVYgvpB44/wBh1RotrkqC7bg2FOasLri2GhR3hMKyzsiTxCoDE49YjPrJeFc4RW0wS8u+EInI09sjxVFRA==", + "dependencies": { + "Grpc.Core.Api": "2.76.0" + } + }, + "Microsoft.ApplicationInsights": { + "type": "Transitive", + "resolved": "2.23.0", + "contentHash": "nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw==" + }, + "Microsoft.AspNetCore.Cryptography.Internal": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "kFUpNRYySfqNLuQKGMKZ2mK8b86R1zizlc9QB6R/Ess0rSkrA8pRNCMSFm+DqUnNfm5G3FWjsYIJOKYyhkHeig==" + }, + "Microsoft.AspNetCore.Cryptography.KeyDerivation": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "NkWUZYkL6wavYY2wMZgnODzsyTOZhcRxP/DJvZlBbWEJViukdyuIqtdTzltODyjsc3MjEvxmbPDDk2KgGv6tMA==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.Internal": "10.0.5" + } + }, + "Microsoft.AspNetCore.Metadata": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "nXVB1K4RzyhDHKYWLiq3+aJopJZKO5ojFqHV9PZ74fe4VWM/8itoouqsd2KIqSooIwQ13UDNlPQfN2rWr7hc2A==" + }, + "Microsoft.AspNetCore.TestHost": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "PJEdrZnnhvxIEXzDdvdZ38GvpdaiUfKkZ99kudS8riJwhowFb/Qh26Wjk9smrCWcYdMFQmpN5epGiL4o1s8LYA==" + }, + "Microsoft.CodeCoverage": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "O+utSr97NAJowIQT/OVp3Lh9QgW/wALVTP4RG1m2AfFP4IyJmJz0ZBmFJUsRQiAPgq6IRC0t8AAzsiPIsaUDEA==" + }, + "Microsoft.DiaSymReader": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "QcZrCETsBJqy/vQpFtJc+jSXQ0K5sucQ6NUFbTNVHD4vfZZOwjZ/3sBzczkC4DityhD3AVO/+K/+9ioLs1AgRA==" + }, + "Microsoft.EntityFrameworkCore.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "32c58Rnm47Qvhimawf67KO9PytgPz3QoWye7Abapt0Yocw/JnzMiSNj/pRoIKyn8Jxypkv86zxKD4Q/zNTc0Ag==" + }, + "Microsoft.EntityFrameworkCore.Analyzers": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "ipC4u1VojgEfoIZhtbS2Sx5IluJTP/Jf1hz3yGsxGBgSukYY/CquI6rAjxn5H58CZgVn36qcuPPtNMwZ0AUzMg==" + }, + "Microsoft.EntityFrameworkCore.Relational": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "uxmFjZEAB/KbsgWFSS4lLqkEHCfXxB2x0UcbiO4e5fCRpFFeTMSx/me6009nYJLu5IKlDwO1POh++P6RilFTDw==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore.Sqlite.Core": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "rVH43bcUyZiMn0SnCpVnvFpl4PFxT4GwmuVVLcT4JL0NtzuHY9ymKV+Llb5cjuJ+6+gEl4eixy2rE8nxOPcBSA==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "10.0.5", + "Microsoft.EntityFrameworkCore.Relational": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyModel": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "bovnONzrr/JIc+w343i857rJEb7cQH9UzEjbV5n67agWBEYICGQb8xiqYz5+GoFXp6mKEKLwYCQGttMU1p5yXQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.4", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.4", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" + } + }, + "Microsoft.Extensions.Caching.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "k/QDdQ94/0Shi0KfU+e12m73jfQo+3JpErTtgpZfsCIqkvdEEO0XIx6R+iTbN55rNPaNhOqNY4/sB+jZ8XxVPw==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "jUEXmkBUPdOS/MP9areK/sbKhdklq9+tEhvwfxGalZVnmyLUO5rrheNNutUBtvbZ7J8ECkG7/r2KXi/IFC06cA==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Compliance.Abstractions": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "4WkknDbVrHNf+S6fwSt1OAXlGJ/G/QrtJlqx4aNzOLmeT3GRyxpGLZn+Q3UV+RMRAF6FfsijEZBg2ZAW8bTAkg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", + "Microsoft.Extensions.ObjectPool": "10.0.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "8Rx5sqg04FttxrumyG6bmoRuFRgYzK6IVwF1i0/o0cXfKBdDeVpJejKHtJCMjyg9E/DNMVqpqOGe/tCT5gYvVA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "99Z4rjyXopb1MIazDSPcvwYCUdYNO01Cf1GUs2WUjIFAbkGmwzj2vPa2k+3pheJRV+YgNd2QqRKHAri0oBAU4Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.CommandLine": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "or9fOLopMUTJOQVJ3bou4aD6PwvsiKf4kZC4EE5sRRKSkmh+wfk/LekJXRjAX88X+1JA9zHjDo+5fiQ7z3MY/A==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "tchMGQ+zVTO40np/Zzg2Li/TIR8bksQgg4UVXZa0OzeFCKWnIYtxE2FVs+eSmjPGCjMS2voZbwN/mUcYfpSTuA==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "OhTr0O79dP49734lLTqVveivVX9sDXxbI/8vjELAZTHXqoN90mdpgTAgwicJED42iaHMCcZcK6Bj+8wNyBikaw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Physical": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.UserSecrets": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "fhdG6UV9lIp70QhNkVyaHciUVq25IPFkczheVJL9bIFvmnJ+Zghaie6dWkDbbVmxZlHl9gj3zTDxMxJs5zNhIA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.Json": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Physical": "10.0.5" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "v1SVsowG6YE1YnHVGmLWz57YTRCQRx9pH5ebIESXfm5isI9gA3QaMyg/oMTzPpXYZwSAVDzYItGJKfmV+pqXkQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "iVMtq9eRvzyhx8949EGT0OCYJfXi737SbRVzWXE5GrOgGj5AaZ9eUuxA/BSUfmOMALKn/g8KfFaNQw0eiB3lyA==" + }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "ksmUG2SFTcXzYdyoLOdeSM/qYLRGN6qbbSzYVkwMK9xsctfR1hYkUayeOpFCMd7L+QSlYX72mK9wxwdgQxyS4g==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.4" + } + }, + "Microsoft.Extensions.DependencyModel": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "xA4kkL+QS6KCAOKz/O0oquHs44Ob8J7zpBCNt3wjkBWDg5aCqfwG8rWWLsg5V86AM0sB849g9JjPjIdksTCIKg==" + }, + "Microsoft.Extensions.Diagnostics": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "vAJHd4yOpmKoK+jBuYV7a3y+Ab9U4ARCc29b6qvMy276RgJFw9LFs0DdsPqOL3ahwzyrX7tM+i4cCxU/RX0qAg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.5" + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "/nYGrpa9/0BZofrVpBbbj+Ns8ZesiPE0V/KxsuHgDgHQopIzN54nRaQGSuvPw16/kI9sW1Zox5yyAPqvf0Jz6A==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "1/hQmONMWxRTKXuN0pQShQN9QsqIRTS1G4fdmKW0O9phuVZjyzIROQD9Fbfwyn2t+yvP8SzjatGAPX4jDRfgHg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4" + } + }, + "Microsoft.Extensions.Features": { + "type": "Transitive", + "resolved": "10.0.4", + "contentHash": "7to+nkZO+g/GiGQOBzAcrr8HcG8dXETI/hg58fJju0jPO9p/GvNLAis8kMPTBdsjfeTfslBrgFX9Yx1KRnKDww==" + }, + "Microsoft.Extensions.FileProviders.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "nCBmCx0Xemlu65ZiWMcXbvfvtznKxf4/YYKF9R28QkqdI9lTikedGqzJ28/xmdGGsxUnsP5/3TQGpiPwVjK0dA==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.FileProviders.Embedded": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "DQzkbLFNfwmjxErAnWyZTTyBd4cMo6vmGteM4Ayedhk5Pccm2VuKoeKcOZjJG1T+dYK6lMCNk2L7Ftl7dLhgqg==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.FileProviders.Physical": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "dMu5kUPSfol1Rqhmr6nWPSmbFjDe9w6bkoKithG17bWTZA0UyKirTatM5mqYUN3mGpNA0MorlusIoVTh6J7o5g==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.FileSystemGlobbing": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.FileSystemGlobbing": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "mOE3ARusNQR0a5x8YOcnUbfyyXGqoAWQtEc7qFOfNJgruDWQLo39Re+3/Lzj5pLPFuFYj8hN4dgKzaSQDKiOCw==" + }, + "Microsoft.Extensions.Hosting": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "8i7e5IBdiKLNqt/+ciWrS8U95Rv5DClaaj7ulkZbimnCi4uREWd+lXzkp3joofFuIPOlAzV4AckxLTIELv2jdg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.Binder": "10.0.5", + "Microsoft.Extensions.Configuration.CommandLine": "10.0.5", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.5", + "Microsoft.Extensions.Configuration.FileExtensions": "10.0.5", + "Microsoft.Extensions.Configuration.Json": "10.0.5", + "Microsoft.Extensions.Configuration.UserSecrets": "10.0.5", + "Microsoft.Extensions.DependencyInjection": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Diagnostics": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Physical": "10.0.5", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Configuration": "10.0.5", + "Microsoft.Extensions.Logging.Console": "10.0.5", + "Microsoft.Extensions.Logging.Debug": "10.0.5", + "Microsoft.Extensions.Logging.EventLog": "10.0.5", + "Microsoft.Extensions.Logging.EventSource": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "ybx2QcCWROCnUCbSj/IyHXn1c58brjjHzTTbueKgBl/qHsWk69mu25mjQ3oaMsO1I0+EcS6AhVuhIopL2q3IDw==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.4", + "Microsoft.Extensions.Telemetry": "10.4.0" + } + }, + "Microsoft.Extensions.Identity.Core": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "ew2Xob+HFvJvM7BelIrUIbGeVMO2q1A6gsZEsI8N/v0ddSv7qbvvY68mH16XzvlsqydqD3ct5ioQHsiEUDSNkg==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.KeyDerivation": "10.0.5", + "Microsoft.Extensions.Diagnostics": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Identity.Stores": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "St8g+4xGLUhfSzTlHSLtCv7kh/tppvFab5x0kFIOsWryf1ffK2Ux+JIg01v5Yf27g2iQLCFEmW5hG5DDZL1HLA==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.5", + "Microsoft.Extensions.Identity.Core": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "+XTMKQyDWg4ODoNHU/BN3BaI1jhGO7VCS+BnzT/4IauiG6y2iPAte7MyD7rHKS+hNP0TkFkjrae8DFjDUxtcxg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Logging.Configuration": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "cSgxsDgfP0+gmVRPVoNHI/KIDavIZxh+CxE6tSLPlYTogqccDnjBFI9CgEsiNuMP6+fiuXUwhhlTz36uUEpwbQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.Binder": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.5" + } + }, + "Microsoft.Extensions.Logging.Console": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "PMs2gha2v24hvH5o5KQem5aNK4mN0BhhCWlMqsg9tzifWKzjeQi2tyPOP/RaWMVvalOhVLcrmoMYPqbnia/epg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Configuration": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Logging.EventLog": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "0ezhWYJS4/6KrqQel9JL+Tr4n+4EX2TF5EYiaysBWNNEM2c3Gtj1moD39esfgk8OHblSX+UFjtZ3z0c4i9tRvw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "System.Diagnostics.EventLog": "10.0.5" + } + }, + "Microsoft.Extensions.Logging.EventSource": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "vN+aq1hBFXyYvY5Ow9WyeR66drKQxRZmas4lAjh6QWfryPkjTn1uLtX5AFIxyDaZj78v5TG2sELUyvrXpAPQQw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.ObjectPool": { + "type": "Transitive", + "resolved": "10.0.4", + "contentHash": "2pufIFOgNl/yWTOoIC9XgBnO9VxgfAjdRCnVwpE2+ICfcroGnjuEAGzJ5lTdZeAe0HvA31vMBWXtcmGB7TOq3g==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "MDaQMdUplw0AIRhWWmbLA7yQEXaLIHb+9CTroTiNS8OlI0LMXS4LCxtopqauiqGCWlRgJ+xyraVD8t6veRAFbw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "BB9uUW3+6Rxu1R97OB1H/13lUF8P2+H1+eDhpZlK30kDh/6E4EKHBUqTp+ilXQmZLzsRErxON8aBSR6WpUKJdg==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.Binder": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "/HUHJ0tw/LQvD0DZrz50eQy/3z7PfX7WWEaXnjKTV9/TNdcgFlNTZGo49QhS7PTmhDqMyHRMqAXSBxLh0vso4g==" + }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "41CCbJJPsDWU6NsmKfANHkfT/+KCBlZZqQ1eBoQhhW0xqGCiWmUlMdi2BoaM/GcwKHX5WiQL/IESROmgk0Owfw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics": "10.0.4", + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.4.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4", + "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.ServiceDiscovery.Abstractions": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "HkBb7cdi27tkQiQw1anQFbXe+A3pjRwDKgVbd/DD9fMAO2X9abK0FEyM/tNVXjW3lwOWl2tF+Xij/DqI6i+JTg==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", + "Microsoft.Extensions.Configuration.Binder": "10.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", + "Microsoft.Extensions.Features": "10.0.4", + "Microsoft.Extensions.Logging.Abstractions": "10.0.4", + "Microsoft.Extensions.Options": "10.0.4", + "Microsoft.Extensions.Primitives": "10.0.4" + } + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "AbHleTzdpGPjA6RpOjKVHEYx7SoBRnJ2bwAbbPa3aGB7HiVwBmeTJhBGhtIBiuIW0VpKDS8x+bV5iWqpBRIf4w==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.4.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.4.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.4", + "Microsoft.Extensions.ObjectPool": "10.0.4", + "Microsoft.Extensions.Telemetry.Abstractions": "10.4.0" + } + }, + "Microsoft.Extensions.Telemetry.Abstractions": { + "type": "Transitive", + "resolved": "10.4.0", + "contentHash": "3b2uVa4voJfLLg39BPCKQS0ZgnpEZFkKf7YmnMVlM5FQJYBPOuePIQdnEK1/Oxd+w3GscxGYuE7IMOXDwixZtQ==", + "dependencies": { + "Microsoft.Extensions.Compliance.Abstractions": "10.4.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.4", + "Microsoft.Extensions.ObjectPool": "10.0.4", + "Microsoft.Extensions.Options": "10.0.4" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.17.0", + "contentHash": "6NrxQGcZg6IunkN8K2F0UVMavNpfCjbjjjON7PYcL8FwI8aULKUreiHsRX/yaA8j3XsTJnQKUYpoQk5gBjULZw==" + }, + "Microsoft.IdentityModel.Logging": { + "type": "Transitive", + "resolved": "8.17.0", + "contentHash": "w1vjfri0BWqW7RkSZY3ZsqekNfIJJg5BQSFs2j+a+pCXOVrkezmJcn74pT3djwjXJh71577C6wJQgNc2UPz30w==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.17.0" + } + }, + "Microsoft.IdentityModel.Protocols": { + "type": "Transitive", + "resolved": "8.0.1", + "contentHash": "uA2vpKqU3I2mBBEaeJAWPTjT9v1TZrGWKdgK6G5qJd03CLx83kdiqO9cmiK8/n1erkHzFBwU/RphP83aAe3i3g==", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "8.0.1" + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect": { + "type": "Transitive", + "resolved": "8.0.1", + "contentHash": "AQDbfpL+yzuuGhO/mQhKNsp44pm5Jv8/BI4KiFXR7beVGZoSH35zMV3PrmcfvSTsyI6qrcR898NzUauD6SRigg==", + "dependencies": { + "Microsoft.IdentityModel.Protocols": "8.0.1", + "System.IdentityModel.Tokens.Jwt": "8.0.1" + } + }, + "Microsoft.NET.Test.Sdk": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "WNpu6vI2rA0pXY4r7NKxCN16XRWl5uHu6qjuyVLoDo6oYEggIQefrMjkRuibQHm/NslIUNCcKftvoWAN80MSAg==", + "dependencies": { + "Microsoft.CodeCoverage": "18.0.1", + "Microsoft.TestPlatform.TestHost": "18.0.1" + } + }, + "Microsoft.OpenApi": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "GGYLfzV/G/ct80OZ45JxnWP7NvMX1BCugn/lX7TH5o0lcVaviavsLMTxmFV2AybXWjbi3h6FF1vgZiTK6PXndw==" + }, + "Microsoft.Testing.Extensions.CodeCoverage": { + "type": "Transitive", + "resolved": "18.4.1", + "contentHash": "l1VZM9dg9s76L5D288ipAT4HRYDJ6Vxh8wX20gfS9VnpueedRfN4/aGNn4oA1g6pwq2WSM3Ci7IoSSGPiqu+WQ==", + "dependencies": { + "Microsoft.DiaSymReader": "2.0.0", + "Microsoft.Extensions.DependencyModel": "8.0.2", + "Microsoft.Testing.Platform": "2.0.2" + } + }, + "Microsoft.Testing.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "5TwgTx2u7k9Al/xbZ18QXq4Hdy2xewkVTI6K3sk+jY2ykqUkIKNuj7rFu3GOV5KnEUkevhw6eZcyZs77STHJIA==", + "dependencies": { + "Microsoft.ApplicationInsights": "2.23.0", + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Extensions.TrxReport": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "cXmP225WcMLLOSrW8xekaNhfzdBwXX3cbXbE5qSzmLbK0KZe3z8rAObKj70FWiPPPzm2W22x0ZW93gsmAfK6Mg==", + "dependencies": { + "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Extensions.TrxReport.Abstractions": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "D8xmIJYQFJ6D49Rx5/vPrkZZxb338Jkew+eSqZLBfBiWKw4QZKy3i1BOXiLfz0lOmaNErwDz/YWRojCdNl+B9Q==", + "dependencies": { + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Extensions.VSTestBridge": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "bNRIEA2YoGr+Y+7LHdA7i1U80+7BAdf4K4Qh4Kx6eKkoBK/NV7QpoMg+GWPP0/eqAFzuUmUOIPVZ87Oo0Vyxmw==", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "18.0.1", + "Microsoft.Testing.Extensions.Telemetry": "2.1.0", + "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0", + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.Testing.Platform": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "aHkjNTGIA+Zbdw6RJgSFrbDrCjO0CgqpElqYcvkRSeUhBv2bKarnvU3ep786U7UqrPlArT/B7VmImRibJD0Zrg==" + }, + "Microsoft.Testing.Platform.MSBuild": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "UpfPebXQtHGrWz21+YLHmJSm+5zsuPE9U9pfdCtoB+67g75fDmWlNgpkH2ZmdVhSwkjNIed9Icg8Iu63z2ei5Q==", + "dependencies": { + "Microsoft.Testing.Platform": "2.1.0" + } + }, + "Microsoft.TestPlatform.ObjectModel": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "qT/mwMcLF9BieRkzOBPL2qCopl8hQu6A1P7JWAoj/FMu5i9vds/7cjbJ/LLtaiwWevWLAeD5v5wjQJ/l6jvhWQ==" + }, + "Microsoft.TestPlatform.TestHost": { + "type": "Transitive", + "resolved": "18.0.1", + "contentHash": "uDJKAEjFTaa2wHdWlfo6ektyoh+WD4/Eesrwb4FpBFKsLGehhACVnwwTI4qD3FrIlIEPlxdXg3SyrYRIcO+RRQ==", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "18.0.1", + "Newtonsoft.Json": "13.0.3" + } + }, + "MimeKit": { + "type": "Transitive", + "resolved": "4.15.1", + "contentHash": "cxCcQhD0zhboFoG136jJuJtQjNRDJ+BxBm3f2vWn+53bff/CRo+K1mAkWjsW4Wuyy5O22F40MdMG2nRzQu1cJw==", + "dependencies": { + "BouncyCastle.Cryptography": "2.6.2", + "System.Security.Cryptography.Pkcs": "10.0.0" + } + }, + "MSTest.Analyzers": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "4ElL/aqomiUInr090VN4udqz46AuszXLrifHkLrgj0zb7na8eAoyUQt3BwDLTcGd1bSkmk3SfD02rZtKU+ZiqQ==" + }, + "MSTest.TestAdapter": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "bRW1Hftwq0XbcVExcAbj4YAfSZDRAziL0mygDkPBvaUe2nSsWFQIatze5lHVjPFJMvSFgWnItku4pguIy5FowQ==", + "dependencies": { + "MSTest.TestFramework": "4.1.0", + "Microsoft.Testing.Extensions.VSTestBridge": "2.1.0", + "Microsoft.Testing.Platform.MSBuild": "2.1.0" + } + }, + "MSTest.TestFramework": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "BzpvsK+CRbk6khwY62h+7HfYzIxtJXyPv9tOI9T90cy5CVy+WI1JkN4ZaNL4Dobqb6dywSwabLTIbPZKpdrr+A==", + "dependencies": { + "MSTest.Analyzers": "4.1.0" + } + }, + "Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" + }, + "Npgsql": { + "type": "Transitive", + "resolved": "10.0.2", + "contentHash": "q5RfBI+wywJSFUNDE1L4ZbHEHCFTblo8Uf6A6oe4feOUFYiUQXyAf9GBh5qEZpvJaHiEbpBPkQumjEhXCJxdrg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.0" + } + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.15.1", + "contentHash": "oJCqFTS/9S70TGPoamdGJRvw5hLOn6I/XC4X0npDErl2sHDlAg030ArJkIHIuLFCTO5GWqj1uDhsZNjO36xMxg==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.1" + } + }, + "OpenTelemetry.Api": { + "type": "Transitive", + "resolved": "1.15.1", + "contentHash": "+LJP0YBrysh4kPCRZhEyTUTcd+FFP0NPDvV4AzULBmiInGt6fp+RgBieRhUzVX/yyVEyshg3s82RWFYZJIkeGQ==" + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.15.1", + "contentHash": "aZedpOfXtHmVSWlebxJBeJg2DCdzds86mMowBTS6l+sjwV9LvQuZa0JDU9+S7FQvta4hnauxlCEYplbiDiYGeg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.15.1" + } + }, + "Polly.Core": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" + }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Polly.Core": "8.4.2" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2", + "System.Threading.RateLimiting": "8.0.0" + } + }, + "Serilog": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "+cDryFR0GRhsGOnZSKwaDzRRl4MupvJ42FhCE4zhQRVanX0Jpg6WuCBk59OVhVDPmab1bB+nRykAnykYELA9qQ==" + }, + "Serilog.Extensions.Hosting": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, + "Serilog.Formatting.Compact": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Serilog.Settings.Configuration": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "LNq+ibS1sbhTqPV1FIE69/9AJJbfaOhnaqkzcjFy95o+4U+STsta9mi97f1smgXsWYKICDeGUf8xUGzd/52/uA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "10.0.0", + "Microsoft.Extensions.DependencyModel": "10.0.0", + "Serilog": "4.3.0" + } + }, + "Serilog.Sinks.Debug": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "SharpZipLib": { + "type": "Transitive", + "resolved": "1.4.2", + "contentHash": "yjj+3zgz8zgXpiiC3ZdF/iyTBbz2fFvMxZFEBPUcwZjIvXOf37Ylm+K58hqMfIBt5JgU/Z2uoUS67JmTLe973A==" + }, + "SQLitePCLRaw.bundle_e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "DC4nA7yWnf4UZdgJDF+9Mus4/cb0Y3Sfgi3gDnAoKNAIBwzkskNAbNbyu+u4atT0ruVlZNJfwZmwiEwE5oz9LQ==", + "dependencies": { + "SQLitePCLRaw.lib.e_sqlite3": "2.1.11", + "SQLitePCLRaw.provider.e_sqlite3": "2.1.11" + } + }, + "SQLitePCLRaw.core": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "PK0GLFkfhZzLQeR3PJf71FmhtHox+U3vcY6ZtswoMjrefkB9k6ErNJEnwXqc5KgXDSjige2XXrezqS39gkpQKA==" + }, + "SQLitePCLRaw.lib.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "Ev2ytaXiOlWZ4b3R67GZBsemTINslLD1DCJr2xiacpn4tbapu0Q4dHEzSvZSMnVWeE5nlObU3VZN2p81q3XOYQ==" + }, + "SQLitePCLRaw.provider.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "Y/0ZkR+r0Cg3DQFuCl1RBnv/tmxpIZRU3HUvelPw6MVaKHwYYR8YNvgs0vuNuXCMvlyJ+Fh88U1D4tah1tt6qw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.11" + } + }, + "SSH.NET": { + "type": "Transitive", + "resolved": "2025.1.0", + "contentHash": "jrnbtf0ItVaXAe6jE8X/kSLa6uC+0C+7W1vepcnRQB/rD88qy4IxG7Lf1FIbWmkoc4iVXv0pKrz+Wc6J4ngmHw==", + "dependencies": { + "BouncyCastle.Cryptography": "2.6.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.3" + } + }, + "System.Diagnostics.EventLog": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "wugvy+pBVzjQEnRs9wMTWwoaeNFX3hsaHeVHFDIvJSWXp7wfmNWu3mxAwBIE6pyW+g6+rHa1Of5fTzb0QVqUTA==" + }, + "System.Security.Cryptography.Pkcs": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "UPWqLSygJlFerRi9XNIuM0a1VC8gHUIufyP24xQ0sc+XimqUAEcjpOz9DhKpyDjH+5B/wO3RpC0KpkEeDj/ddg==" + }, + "System.Threading.RateLimiting": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" + }, + "Testcontainers": { + "type": "Transitive", + "resolved": "4.11.0", + "contentHash": "9pBNaK9Ra3GVnr5h6gaDJOBH0txA5G3Juho5WANPuyu38l5xyr2lCvf11oA5/uSd+Lh4Wtng34nKp3nMiea02g==", + "dependencies": { + "Docker.DotNet.Enhanced": "3.131.1", + "Docker.DotNet.Enhanced.X509": "3.131.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "SSH.NET": "2025.1.0", + "SharpZipLib": "1.4.2" + } + }, + "TimeZoneConverter": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "sFbY65N/5GdsHx7nkdHFHUG+5Ar4W0w6Aks7Y2X+Q4NOTw6XyX2Il7jm+4tPkc//4mA3nG0RdxI8gKgoJitdLw==" + }, + "werkr.api": { + "type": "Project", + "dependencies": { + "Grpc.AspNetCore": "[2.76.0, )", + "Microsoft.AspNetCore.Authentication.JwtBearer": "[10.0.5, )", + "Microsoft.AspNetCore.OpenApi": "[10.0.5, )", + "Microsoft.IdentityModel.JsonWebTokens": "[8.17.0, )", + "Serilog.AspNetCore": "[10.0.0, )", + "Serilog.Sinks.Console": "[6.1.1, )", + "Serilog.Sinks.File": "[7.0.0, )", + "Serilog.Sinks.OpenTelemetry": "[4.2.0, )", + "Werkr.Common": "[1.0.0, )", + "Werkr.Core": "[1.0.0, )", + "Werkr.Data": "[1.0.0, )", + "Werkr.ServiceDefaults": "[1.0.0, )" + } + }, + "werkr.common": { + "type": "Project", + "dependencies": { + "Google.Protobuf": "[3.34.1, )", + "Microsoft.AspNetCore.Authorization": "[10.0.5, )", + "Microsoft.Extensions.Configuration.Json": "[10.0.5, )", + "Microsoft.IdentityModel.Tokens": "[8.17.0, )", + "TimeZoneNames": "[7.0.0, )", + "Werkr.Common.Configuration": "[1.0.0, )" + } + }, + "werkr.common.configuration": { + "type": "Project" + }, + "werkr.core": { + "type": "Project", + "dependencies": { + "Grpc.Net.Client": "[2.76.0, )", + "MailKit": "[4.15.1, )", + "Microsoft.Extensions.Hosting.Abstractions": "[10.0.5, )", + "System.Security.Cryptography.ProtectedData": "[10.0.5, )", + "Werkr.Common": "[1.0.0, )", + "Werkr.Data": "[1.0.0, )" + } + }, + "werkr.data": { + "type": "Project", + "dependencies": { + "EFCore.NamingConventions": "[10.0.1, )", + "Microsoft.EntityFrameworkCore": "[10.0.5, )", + "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.5, )", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.1, )", + "Werkr.Common": "[1.0.0, )" + } + }, + "werkr.data.identity": { + "type": "Project", + "dependencies": { + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.5, )", + "Microsoft.AspNetCore.Identity.UI": "[10.0.5, )", + "Werkr.Common": "[1.0.0, )", + "Werkr.Data": "[1.0.0, )" + } + }, + "werkr.servicedefaults": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Http.Resilience": "[10.4.0, )", + "Microsoft.Extensions.ServiceDiscovery": "[10.4.0, )", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.15.1, )", + "OpenTelemetry.Extensions.Hosting": "[1.15.1, )", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.15.1, )", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.15.0-beta.1, )", + "OpenTelemetry.Instrumentation.GrpcNetClient": "[1.15.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.15.0, )", + "OpenTelemetry.Instrumentation.Runtime": "[1.15.0, )" + } + }, + "EFCore.NamingConventions": { + "type": "CentralTransitive", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "Xs5k8XfNKPkkQSkGmZkmDI1je0prLTdxse+s8PgTFZxyBrlrTLzTBUTVJtQKSsbvu4y+luAv8DdtO5SALJE++A==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[10.0.1, 11.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.1, 11.0.0)", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1" + } + }, + "Google.Protobuf": { + "type": "CentralTransitive", + "requested": "[3.34.1, )", + "resolved": "3.34.1", + "contentHash": "212vdYxRuVopGE5bess6Jg5oXWyizA6hcLPTI7G+qA4PthQEvfeof3njT+7VSY5v/+O0P22xTydiP5fSJJpGEA==" + }, + "Grpc.AspNetCore": { + "type": "CentralTransitive", + "requested": "[2.76.0, )", + "resolved": "2.76.0", + "contentHash": "LyXMmpN2Ba0TE35SOLSKbGqIYtJuhc1UgiaGfoW1X8KJERV70QI5KGW+ckEY7MrXoFWN/uWo4B70siVhbDmCgQ==", + "dependencies": { + "Google.Protobuf": "3.31.1", + "Grpc.AspNetCore.Server.ClientFactory": "2.76.0", + "Grpc.Tools": "2.76.0" + } + }, + "Grpc.Net.Client": { + "type": "CentralTransitive", + "requested": "[2.76.0, )", + "resolved": "2.76.0", + "contentHash": "K1oldmqw2+Gn69nGRzZLhqSiUZwelX1GrBu/cUl9wNf1C0uB61vFS6JcxUUv9P8VoUJhFsmV44JA6lI2EUt4xw==", + "dependencies": { + "Grpc.Net.Common": "2.76.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0" + } + }, + "Grpc.Net.ClientFactory": { + "type": "CentralTransitive", + "requested": "[2.76.0, )", + "resolved": "2.76.0", + "contentHash": "XI+kO69L9AV8B9N0UQOmH911r6MOEp9huHiavEsY56DJYuzJ9KAxNGy37dpV6CLbgCaN2uKmpOsZ9Pao6bmpVQ==", + "dependencies": { + "Grpc.Net.Client": "2.76.0", + "Microsoft.Extensions.Http": "8.0.0" + } + }, + "Grpc.Tools": { + "type": "CentralTransitive", + "requested": "[2.78.0, )", + "resolved": "2.78.0", + "contentHash": "6jPG2gHon+w2PczW8jjrCRnW/g9eEfCdd7aK6mDooptWtuPsV3ZxAwKKEx7LGEDVoT4c2SViRl8Yu3L1XiWIIg==" + }, + "MailKit": { + "type": "CentralTransitive", + "requested": "[4.15.1, )", + "resolved": "4.15.1", + "contentHash": "4mLbqTbH3ctd0NlukHjVQbU3ZnNDuCtB6ttNZDLPZLWMA2Dr31rh/eCSTqOwDojUX8zfDOVaxstMgJTE9PwZNA==", + "dependencies": { + "MimeKit": "4.15.1" + } + }, + "Microsoft.AspNetCore.Authentication.JwtBearer": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "fZzXogChrwQ/SfifQJgeW7AtR8hUv5+LH9oLWjm5OqfnVt3N8MwcMHHMdawvqqdjP79lIZgetnSpj77BLsSI1g==", + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.0.1" + } + }, + "Microsoft.AspNetCore.Authorization": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "NbFi4wN6fUvZK4AKmixpfx0IvqtVimKEn8ZX28LkzZBVo09YnLbyRrJ1001IVQDLbV+aYpS/cLhVJu5JD0rY5A==", + "dependencies": { + "Microsoft.AspNetCore.Metadata": "10.0.5", + "Microsoft.Extensions.Diagnostics": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "oo1uauTwgcnhYgituZ2nI3wJ8XN9z76ggu2zkOJu1BCfOOsqr+g08Kr4MOiMuXEhwySkpIV+MVoC25hC1288NA==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.5", + "Microsoft.Extensions.Identity.Stores": "10.0.5" + } + }, + "Microsoft.AspNetCore.Identity.UI": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "qzYhpJ4Uxng18hmuKqwqydZaPzItrv9WOwNULJ2ka952TZKlOQkERTSkVO8G/19WiRtoznZatrcRyOvppYRGFA==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Embedded": "10.0.5", + "Microsoft.Extensions.Identity.Stores": "10.0.5" + } + }, + "Microsoft.AspNetCore.OpenApi": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "vTcxIfOPyfFbYk1g8YcXJfkMnlEWVkSnnjxcZLy60zgwiHMRf2SnZR+9E4HlpwKxgE3yfKMOti8J6WfKuKsw6w==", + "dependencies": { + "Microsoft.OpenApi": "2.0.0" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "jFYXnh7s0RShCw6Vkf+ReGCw+mVi7ISg1YaEzYCJcXnUifmbW+aqvCsRJuSRj2ZuQ+oqetpjxlZtbpMmk5FKqQ==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "9tNBmK3EpYVGRQLiqP+bqK2m+TD0Gv//4vCzR7ZOgl4FWzCFyOpYdIVka13M4kcBdPdSJcs3wbHr3rmzOqbIMA==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "10.0.5", + "Microsoft.EntityFrameworkCore.Analyzers": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore.Sqlite": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "lxeRviglTkkmzYJVJ600yb6gJjnf5za9v7uH+0byuSXTGv7U8cT6hz7qRTmiGSOfLcl86QFdy2BBKaUFd6NQug==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Sqlite.Core": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyModel": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.11", + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "P09QpTHjqHmCLQOTC+WyLkoRNxek4NIvfWt+TnU0etoDUSRxcltyd6+j/ouRbMdLR0j44GqGO+lhI2M4fAHG4g==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.Json": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "brBM/WP0YAUYh2+QqSYVdK8eQHYQTtTEUJXJ+84Zkdo2buGLja9VSrMIhgoeBUU7JBmcskAib8Lb/N83bvxgYQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.FileExtensions": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Hosting.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "+Wb7KAMVZTomwJkQrjuPTe5KBzGod7N8XeG+ScxRlkPOB4sZLG4ccVwjV4Phk5BCJt7uIMnGHVoN6ZMVploX+g==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Http": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "AiFvHYM8nP0wPC7bGPI3NHQlSYSLqjjT7DMJUuuxhd+7pz3O89iu2gdQfgACy5DxsXENiok5i1bMacJL7KR8jA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Diagnostics": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "CentralTransitive", + "requested": "[10.4.0, )", + "resolved": "10.4.0", + "contentHash": "HbkUsPUC7vLy2TaDbdA9aooW64n9yX4sUppRuiJ1cOzzU1FUW+MVEotm6kYVq6AuUI9xwFSBhRFzA03blmk3VA==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.4.0", + "Microsoft.Extensions.ObjectPool": "10.0.4", + "Microsoft.Extensions.Resilience": "10.4.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "9HOdqlDtPptVcmKAjsQ/Nr5Rxfq6FMYLdhvZh1lVmeKR738qeYecQD7+ldooXf+u2KzzR1kafSphWngIM3C6ug==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Logging.Debug": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "/VacEkBQ02A8PBXSa6YpbIXCuisYy6JJr62/+ANJDZE+RMBfZMcXJXLfr/LpyLE6pgdp17Wxlt7e7R9zvkwZ3Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.ServiceDiscovery": { + "type": "CentralTransitive", + "requested": "[10.4.0, )", + "resolved": "10.4.0", + "contentHash": "RznZAH6L4RNvroECT5JpqfFQJjHTn+8N7+ThSgYutbshkuymFeL/uBIZt1CM8LOdpPPhn4//a5fLUah9/k7ayQ==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.4", + "Microsoft.Extensions.ServiceDiscovery.Abstractions": "10.4.0" + } + }, + "Microsoft.IdentityModel.Tokens": { + "type": "CentralTransitive", + "requested": "[8.17.0, )", + "resolved": "8.17.0", + "contentHash": "teaW35URIV2x78Tzk+dVJiC4M62/9mQoSEoDjDGoEZmcQa3H2rE+XQpm9Tmdo9KK1Lcrnve4zoyLavl69kCFGg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.17.0" + } + }, + "Npgsql.EntityFrameworkCore.PostgreSQL": { + "type": "CentralTransitive", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "P6EwH0Q4xkaA264iNZDqCPhWt8pscfUGxXazDQg4noBfqjoOlk4hKWfvBjF9ZX3R/9JybRmmJfmxr2iBMj0EpA==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", + "Npgsql": "10.0.2" + } + }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "400L64MwDd1s2bj4fFJblo3Hf5rXE3bhJUlOSBcLF6QP1Ln116Eqnwnesxhg2siDxOgHYLjcfCC8ByJTDEpNFQ==", + "dependencies": { + "OpenTelemetry": "1.15.1" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "/mN9I16P8miDSHogFC0OFyPzUvYXibk/rLFLXW3Io50IN+XEQx7E6dSyUdMRdY+NKmOCo/oS5ICXkjdoFrwq2A==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.15.1" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "wXaZTu6LHY8xcbRd6ClcrtjHqGVoGYCcArXEZA3iUjUcYSVYwDGyPU0PdkwTfylxv8JeCCVDQhVb0fT7xBJjGA==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.15.0-beta.1, )", + "resolved": "1.15.0-beta.1", + "contentHash": "N01GzP+r8lpSBiqjRX0/WjSp17r+zk6dKvGKthiASyFzF44lrJo8cA3ihXnw3p4Rnqg1mVjOYy19R6iJ84NTpg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.GrpcNetClient": { + "type": "CentralTransitive", + "requested": "[1.15.0-beta.1, )", + "resolved": "1.15.0-beta.1", + "contentHash": "SBas5+C4kGUqoy8OPpQis+QIgJ7/aaJl4H3oLzHCJnZLCb8TXZmQL2/r753RXXJUH8oIeLIzdW+EXgujSy+cpQ==", + "dependencies": { + "OpenTelemetry": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.15.0, )", + "resolved": "1.15.0", + "contentHash": "uToc7bUp8IEdb0ny9mKsL6FrrYelINPzxxiSShJgOf4XmQc4Azww6S5RjRj24YhsOn2a1MABOrxfVTZXtDk4Eg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.15.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.15.0, )", + "resolved": "1.15.0", + "contentHash": "OOvpqR/j2Pb6+tWhHNODIbSJ53Or/MDtTiXEyrsWI02K2lLAgvBFcxUOrHggS/8015cYR3AdSaXv6NZrkz5yQA==", + "dependencies": { + "OpenTelemetry.Api": "[1.15.0, 2.0.0)" + } + }, + "Serilog.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.0.0, )", + "resolved": "10.0.0", + "contentHash": "a/cNa1mY4On1oJlfGG1wAvxjp5g7OEzk/Jf/nm7NF9cWoE7KlZw1GldrifUBWm9oKibHkR7Lg/l5jy3y7ACR8w==", + "dependencies": { + "Serilog": "4.3.0", + "Serilog.Extensions.Hosting": "10.0.0", + "Serilog.Formatting.Compact": "3.0.0", + "Serilog.Settings.Configuration": "10.0.0", + "Serilog.Sinks.Console": "6.1.1", + "Serilog.Sinks.Debug": "3.0.0", + "Serilog.Sinks.File": "7.0.0" + } + }, + "Serilog.Sinks.Console": { + "type": "CentralTransitive", + "requested": "[6.1.1, )", + "resolved": "6.1.1", + "contentHash": "8jbqgjUyZlfCuSTaJk6lOca465OndqOz3KZP6Cryt/IqZYybyBu7GP0fE/AXBzrrQB3EBmQntBFAvMVz1COvAA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Serilog.Sinks.File": { + "type": "CentralTransitive", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "fKL7mXv7qaiNBUC71ssvn/dU0k9t0o45+qm2XgKAlSt19xF+ijjxyA3R6HmCgfKEKwfcfkwWjayuQtRueZFkYw==", + "dependencies": { + "Serilog": "4.2.0" + } + }, + "Serilog.Sinks.OpenTelemetry": { + "type": "CentralTransitive", + "requested": "[4.2.0, )", + "resolved": "4.2.0", + "contentHash": "PzMCyE5G19tjr5IZEi5qg+4UU5QrxBEoBEMu/hhYybTrGKXqUDiSGWKZNUDBgelaVKqLADlsmlJVyKce5SyPrg==", + "dependencies": { + "Google.Protobuf": "3.30.1", + "Grpc.Net.Client": "2.70.0", + "Serilog": "4.2.0" + } + }, + "System.IdentityModel.Tokens.Jwt": { + "type": "CentralTransitive", + "requested": "[8.16.0, )", + "resolved": "8.16.0", + "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Tokens": "8.16.0" + } + }, + "System.Security.Cryptography.ProtectedData": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "kxR4O/8o32eNN3m4qbLe3UifYqeyEpallCyVAsLvL5ZFJVyT3JCb+9du/WHfC09VyJh1Q+p/Gd4+AwM7Rz4acg==" + }, + "TimeZoneNames": { + "type": "CentralTransitive", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "zc1sIJZMDH7pPO1Gqte9yjMEFSILShTRNuxVxnNdiZP4NGGSi3ZGe2OSrW2phjzM/QKe3pKOwUXfQmJMjDBOKQ==", + "dependencies": { + "TimeZoneConverter": "7.0.0" + } + } + } + } } \ No newline at end of file diff --git a/src/Werkr.Agent/Configuration/AgentConfigurationProvider.cs b/src/Werkr.Agent/Configuration/AgentConfigurationProvider.cs index a8e3159..3e8d0f6 100644 --- a/src/Werkr.Agent/Configuration/AgentConfigurationProvider.cs +++ b/src/Werkr.Agent/Configuration/AgentConfigurationProvider.cs @@ -106,7 +106,8 @@ CancellationToken ct ) { _credentialMetadata.Clear( ); foreach ((string name, string type, bool isScopedToThisAgent) in credentials) { - _credentialMetadata[name] = (type, isScopedToThisAgent); + if (!ct.IsCancellationRequested) + _credentialMetadata[name] = (type, isScopedToThisAgent); } LogCredentialMetadataUpdated( logger, credentials.Count ); diff --git a/src/Werkr.Agent/Operators/ActionOperator.cs b/src/Werkr.Agent/Operators/ActionOperator.cs index 579aae0..4ac61be 100644 --- a/src/Werkr.Agent/Operators/ActionOperator.cs +++ b/src/Werkr.Agent/Operators/ActionOperator.cs @@ -84,7 +84,7 @@ public ActionOperator( ) { _options = options; _logger = logger; - _handlers = new Dictionary( StringComparer.OrdinalIgnoreCase ); + _handlers = new( StringComparer.OrdinalIgnoreCase ); foreach (IActionHandler handler in handlers) { if (!_handlers.TryAdd( handler.Action, handler )) { diff --git a/src/Werkr.Agent/Scheduling/ScheduleEvaluatorService.cs b/src/Werkr.Agent/Scheduling/ScheduleEvaluatorService.cs index 7bdf195..e2331f4 100644 --- a/src/Werkr.Agent/Scheduling/ScheduleEvaluatorService.cs +++ b/src/Werkr.Agent/Scheduling/ScheduleEvaluatorService.cs @@ -982,7 +982,7 @@ internal async Task ExecuteTaskLocallyAsync( ScheduledTaskDefinition taskDef, Ca // Persist job locally in the agent's SQLite database await PersistJobLocallyAsync( jobId, taskDef.TaskId, taskDef.Content, startTime, endTime, - success, exitCode, errorCategory, tailPreview, null, scheduleId, ct ); + success, exitCode, errorCategory, tailPreview, scheduleId, ct ); // Report result to server (includes agent-assigned job ID and schedule ID for upsert) await ReportJobResultAsync( jobId, taskDef, startTime, endTime, success, exitCode, errorCategory, null, tailPreview, scheduleId, ct ); @@ -1161,7 +1161,6 @@ private async Task PersistJobLocallyAsync( int exitCode, ErrorCategory errorCategory, string? outputPreview, - string? workflowRunId, Guid? scheduleId, CancellationToken ct ) { @@ -1187,9 +1186,10 @@ CancellationToken ct ScheduleId = scheduleId, }; - if (!string.IsNullOrWhiteSpace( workflowRunId ) && Guid.TryParse( workflowRunId, out Guid wfRunId )) { - job.WorkflowRunId = wfRunId; - } + // The Agent's local SQLite DB has no WorkflowRun table, so the FK + // would violate a constraint. Leave WorkflowRunId null for local + // save; the original workflowRunId string is passed separately to + // the API via ReportJobResultAsync. _ = dbContext.Jobs.Add( job ); _ = await dbContext.SaveChangesAsync( ct ); diff --git a/src/Werkr.Agent/packages.lock.json b/src/Werkr.Agent/packages.lock.json index 2467419..07f1f11 100644 --- a/src/Werkr.Agent/packages.lock.json +++ b/src/Werkr.Agent/packages.lock.json @@ -335,15 +335,15 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "gSxKLWRZzBpIsEoeUPkxfywNCCvRvl7hkq146XHPk5vOQc9izSf1I+uL1vh4y2U19QPxd9Z8K/8AdWyxYz2lSg==" + "resolved": "8.17.0", + "contentHash": "6NrxQGcZg6IunkN8K2F0UVMavNpfCjbjjjON7PYcL8FwI8aULKUreiHsRX/yaA8j3XsTJnQKUYpoQk5gBjULZw==" }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "MTzXmETkNQPACR7/XCXM1OGM6oU9RkyibqeJRtO9Ndew2LnGjMf9Atqj2VSf4XC27X0FQycUAlzxxEgQMWn2xQ==", + "resolved": "8.17.0", + "contentHash": "w1vjfri0BWqW7RkSZY3ZsqekNfIJJg5BQSFs2j+a+pCXOVrkezmJcn74pT3djwjXJh71577C6wJQgNc2UPz30w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.16.0" + "Microsoft.IdentityModel.Abstractions": "8.17.0" } }, "Microsoft.Management.Infrastructure": { @@ -525,23 +525,23 @@ }, "OpenTelemetry": { "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "7mS/oZFF8S6xyqGQfMU1btp0nXJQUPWV535Vp/XMLYwRAUv36xQN+U4vufWBF1+z4HnRTOwuFHtUSGnHbyN6FQ==", + "resolved": "1.15.1", + "contentHash": "oJCqFTS/9S70TGPoamdGJRvw5hLOn6I/XC4X0npDErl2sHDlAg030ArJkIHIuLFCTO5GWqj1uDhsZNjO36xMxg==", "dependencies": { - "OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.0" + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.1" } }, "OpenTelemetry.Api": { "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "vk5OGdf6K9kQScCWo3bRjhDWCv6Pqw92IpX4dlARZ8B1WL7/2NGTDtCkkw42eQf7UdwyoHKzVvMH/PtL8d6z7w==" + "resolved": "1.15.1", + "contentHash": "+LJP0YBrysh4kPCRZhEyTUTcd+FFP0NPDvV4AzULBmiInGt6fp+RgBieRhUzVX/yyVEyshg3s82RWFYZJIkeGQ==" }, "OpenTelemetry.Api.ProviderBuilderExtensions": { "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "OnuSUlRpGvowkOzGFQfy+KZFu0cITfKfh2IYJJiZskxVJiOuexwOOuvfDAgpJdmTzVWAHjYdz2shcHZaJ06UjQ==", + "resolved": "1.15.1", + "contentHash": "aZedpOfXtHmVSWlebxJBeJg2DCdzds86mMowBTS6l+sjwV9LvQuZa0JDU9+S7FQvta4hnauxlCEYplbiDiYGeg==", "dependencies": { - "OpenTelemetry.Api": "1.15.0" + "OpenTelemetry.Api": "1.15.1" } }, "Polly.Core": { @@ -990,7 +990,7 @@ "type": "Project", "dependencies": { "Google.Protobuf": "[3.34.1, )", - "Microsoft.IdentityModel.Tokens": "[8.16.0, )", + "Microsoft.IdentityModel.Tokens": "[8.17.0, )", "TimeZoneNames": "[7.0.0, )", "Werkr.Common.Configuration": "[1.0.0, )" } @@ -1023,8 +1023,8 @@ "dependencies": { "Microsoft.Extensions.Http.Resilience": "[10.4.0, )", "Microsoft.Extensions.ServiceDiscovery": "[10.4.0, )", - "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.15.0, )", - "OpenTelemetry.Extensions.Hosting": "[1.15.0, )", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.15.1, )", + "OpenTelemetry.Extensions.Hosting": "[1.15.1, )", "OpenTelemetry.Instrumentation.AspNetCore": "[1.15.1, )", "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.15.0-beta.1, )", "OpenTelemetry.Instrumentation.GrpcNetClient": "[1.15.0-beta.1, )", @@ -1118,11 +1118,11 @@ }, "Microsoft.IdentityModel.Tokens": { "type": "CentralTransitive", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "rtViGJcGsN7WcfUNErwNeQgjuU5cJNl6FDQsfi9TncwO+Epzn0FTfBsg3YuFW1Q0Ch/KPxaVdjLw3/+5Z5ceFQ==", + "requested": "[8.17.0, )", + "resolved": "8.17.0", + "contentHash": "teaW35URIV2x78Tzk+dVJiC4M62/9mQoSEoDjDGoEZmcQa3H2rE+XQpm9Tmdo9KK1Lcrnve4zoyLavl69kCFGg==", "dependencies": { - "Microsoft.IdentityModel.Logging": "8.16.0" + "Microsoft.IdentityModel.Logging": "8.17.0" } }, "Npgsql.EntityFrameworkCore.PostgreSQL": { @@ -1138,20 +1138,20 @@ }, "OpenTelemetry.Exporter.OpenTelemetryProtocol": { "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "VH8ANc/js9IRvfYt0Q2UaAxNCOWm+IU+vWrtoH7pfx4oWPVdISUt+9uWfBCFMWZg5WzQip5dhslyDjeyZXXfSQ==", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "400L64MwDd1s2bj4fFJblo3Hf5rXE3bhJUlOSBcLF6QP1Ln116Eqnwnesxhg2siDxOgHYLjcfCC8ByJTDEpNFQ==", "dependencies": { - "OpenTelemetry": "1.15.0" + "OpenTelemetry": "1.15.1" } }, "OpenTelemetry.Extensions.Hosting": { "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "RixjKyB1pbYGhWdvPto4KJs+exdQknJsnjUO9WszdLles5Vcd0EYzxPNJdwmLjYfP+Jfbr4B5nktM4ZgeHSWtg==", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "/mN9I16P8miDSHogFC0OFyPzUvYXibk/rLFLXW3Io50IN+XEQx7E6dSyUdMRdY+NKmOCo/oS5ICXkjdoFrwq2A==", "dependencies": { - "OpenTelemetry": "1.15.0" + "OpenTelemetry": "1.15.1" } }, "OpenTelemetry.Instrumentation.AspNetCore": { diff --git a/src/Werkr.Api/Endpoints/AgentEndpoints.cs b/src/Werkr.Api/Endpoints/AgentEndpoints.cs index bb08539..19d39ca 100644 --- a/src/Werkr.Api/Endpoints/AgentEndpoints.cs +++ b/src/Werkr.Api/Endpoints/AgentEndpoints.cs @@ -240,7 +240,7 @@ out ConnectionStatus newStatus /// Registers the aggregate agent health endpoint backed by stored LastSeen/Status data. /// private static void MapAgentHealth( WebApplication app ) { - const int offlineThresholdSeconds = 180; + const int OfflineThresholdSeconds = 180; _ = app.MapGet( "/api/v1/agents/health", @@ -255,7 +255,7 @@ CancellationToken ct .ToListAsync( ct ); DateTime now = DateTime.UtcNow; - DateTime cutoff = now.AddSeconds( -offlineThresholdSeconds ); + DateTime cutoff = now.AddSeconds( -OfflineThresholdSeconds ); List results = [.. connections.Select( c => { // Revoked agents always show as Revoked diff --git a/src/Werkr.Api/Endpoints/AuditEndpoints.cs b/src/Werkr.Api/Endpoints/AuditEndpoints.cs index 933ada4..088cf01 100644 --- a/src/Werkr.Api/Endpoints/AuditEndpoints.cs +++ b/src/Werkr.Api/Endpoints/AuditEndpoints.cs @@ -124,6 +124,16 @@ IAuditEventTypeRegistry registry .WithName( "GetAuditModules" ) .RequireAuthorization( Policies.IsAdmin ); + // GET /api/v1/audit/entity-types — list distinct entity types from audit data + _ = app.MapGet( + "/api/v1/audit/entity-types", + async ( + IAuditService auditService, + CancellationToken ct + ) => Results.Ok( await auditService.GetEntityTypesAsync( ct ) ) ) + .WithName( "GetAuditEntityTypes" ) + .RequireAuthorization( Policies.IsAdmin ); + // POST /api/v1/audit/export — streaming file download (JSON or CSV) _ = app.MapPost( "/api/v1/audit/export", diff --git a/src/Werkr.Api/Endpoints/StatusEndpoints.cs b/src/Werkr.Api/Endpoints/StatusEndpoints.cs index e0c5028..ab4423c 100644 --- a/src/Werkr.Api/Endpoints/StatusEndpoints.cs +++ b/src/Werkr.Api/Endpoints/StatusEndpoints.cs @@ -21,8 +21,6 @@ private static IResult GetApiArt( ) { return Results.Text( content: Random.Shared.Next( 0, 10 ) == 0 ? """ -Werkr API - ╔════════════════════════════════╗ ║ ┌────────────────────────────┐ ║ ║ │ --- --- │ ║ @@ -43,12 +41,10 @@ Werkr API ++++++++++++++++++++++++++++++++++++++++._______._|_.__._|_.__._|_.__._|_.__._|_.__._|_.__._|_._._|_.__._|_.__._|_.__._|_. """ : """ -Werkr API - ╔════════════════════════════════╗ ║ ┌────────────────────────────┐ ║ ║ │ --- --- │ ║ - ║ │ • • │ ║ + ║ │ • • │ ║ ╔════║ │ ____________________ │ ║════╗ ║ ║ └────────────────────────────┘ ║ ║ ║ ║ ║ ║ @@ -58,7 +54,7 @@ Werkr API ║ ║ \ V V / __/ | | <| | ║ ║ ║____║ \_/\_/ \___|_| |_|\_\_| ║____║ ╚════║ ║════╝ - ╚════════════════════════════════╝ + ╚════════════════════════════════╝ | API | | Http | | | | gRPC | | | | | diff --git a/src/Werkr.Api/Endpoints/WorkflowEndpoints.cs b/src/Werkr.Api/Endpoints/WorkflowEndpoints.cs index 2fa7e7e..5f39b5c 100644 --- a/src/Werkr.Api/Endpoints/WorkflowEndpoints.cs +++ b/src/Werkr.Api/Endpoints/WorkflowEndpoints.cs @@ -823,24 +823,13 @@ CancellationToken ct List workflowIds = [.. summaries.Select( w => w.Id )]; // Query 2 — Sparkline data (recent runs for the page of workflow IDs) - List recentRuns; - try { - recentRuns = await dbContext.WorkflowRuns.AsNoTracking( ) - .Where( r => workflowIds.Contains( r.WorkflowId ) ) - .GroupBy( r => r.WorkflowId ) - .SelectMany( g => g.OrderByDescending( r => r.StartTime ).Take( sparklineCount ) ) - .ToListAsync( ct ); - } catch (Exception ex) { - // Fallback: EF provider may not support GroupBy+SelectMany+Take - logger.LogWarning( ex, "Sparkline GroupBy query failed; falling back to in-memory grouping" ); - recentRuns = await dbContext.WorkflowRuns.AsNoTracking( ) - .Where( r => workflowIds.Contains( r.WorkflowId ) ) - .OrderByDescending( r => r.StartTime ) - .ToListAsync( ct ); - recentRuns = [.. recentRuns - .GroupBy( r => r.WorkflowId ) - .SelectMany( g => g.Take( sparklineCount ) )]; - } + List recentRuns = await dbContext.WorkflowRuns.AsNoTracking() + .Where(r => workflowIds.Contains(r.WorkflowId)) + .OrderByDescending(r => r.StartTime) + .ToListAsync(ct); + recentRuns = [.. recentRuns + .GroupBy( r => r.WorkflowId ) + .SelectMany( g => g.Take( sparklineCount ) )]; ILookup sparklineByWorkflow = recentRuns .OrderBy( r => r.StartTime ) @@ -942,37 +931,21 @@ CancellationToken ct } List steps; - try { - steps = await dbContext.WorkflowStepExecutions.AsNoTracking( ) - .Where( e => e.WorkflowRunId == latestRun.Id ) - .GroupBy( e => e.StepId ) - .Select( g => g.OrderByDescending( e => e.Attempt ).First( ) ) - .Select( e => new StepStatusSummaryDto( - StepId: e.StepId, - Status: e.Status.ToString( ), - StartTime: e.StartTime, - EndTime: e.EndTime, - ExitCode: e.Job != null ? e.Job.ExitCode : null ) ) - .ToListAsync( ct ); - } catch (Exception ex) { - // Fallback: EF provider (e.g. SQLite) may not support GroupBy+First - logger.LogWarning( ex, "Latest-run-status GroupBy query failed; falling back to in-memory grouping" ); - List allExecs = await dbContext.WorkflowStepExecutions - .AsNoTracking( ) - .Include( e => e.Job ) - .Where( e => e.WorkflowRunId == latestRun.Id ) - .OrderByDescending( e => e.Attempt ) - .ToListAsync( ct ); - steps = [.. allExecs - .GroupBy( e => e.StepId ) - .Select( g => g.First( ) ) - .Select( e => new StepStatusSummaryDto( - StepId: e.StepId, - Status: e.Status.ToString( ), - StartTime: e.StartTime, - EndTime: e.EndTime, - ExitCode: e.Job?.ExitCode ) )]; - } + List allExecs = await dbContext.WorkflowStepExecutions + .AsNoTracking() + .Include(e => e.Job) + .Where(e => e.WorkflowRunId == latestRun.Id) + .OrderByDescending(e => e.Attempt) + .ToListAsync(ct); + steps = [.. allExecs + .GroupBy( e => e.StepId ) + .Select( g => g.First( ) ) + .Select( e => new StepStatusSummaryDto( + StepId: e.StepId, + Status: e.Status.ToString( ), + StartTime: e.StartTime, + EndTime: e.EndTime, + ExitCode: e.Job?.ExitCode ) )]; return Results.Ok( new WorkflowLatestRunStatusDto( RunId: latestRun.Id, diff --git a/src/Werkr.Api/Interceptors/AgentBearerTokenInterceptor.cs b/src/Werkr.Api/Interceptors/AgentBearerTokenInterceptor.cs index 10bd361..d4daaea 100644 --- a/src/Werkr.Api/Interceptors/AgentBearerTokenInterceptor.cs +++ b/src/Werkr.Api/Interceptors/AgentBearerTokenInterceptor.cs @@ -131,7 +131,15 @@ private async Task ValidateBearerTokenAsync( ServerCallContext context ) { // Debounced LastSeen update (only write if null or older than 60 seconds) if (connection.LastSeen is null || connection.LastSeen < DateTime.UtcNow.AddSeconds( -60 )) { connection.LastSeen = DateTime.UtcNow; - _ = await dbContext.SaveChangesAsync( ); + try { + _ = await dbContext.SaveChangesAsync( ); + } catch (DbUpdateConcurrencyException) { + // Best-effort write — another request already updated LastSeen. + if (logger.IsEnabled( LogLevel.Debug )) { + logger.LogDebug( "Swallowed DbUpdateConcurrencyException on LastSeen update for connection {ConnectionId}.", + connectionId ); + } + } } // Store resolved connection and optional call ID in UserState for downstream services diff --git a/src/Werkr.Api/Program.cs b/src/Werkr.Api/Program.cs index f970cbf..d63e435 100644 --- a/src/Werkr.Api/Program.cs +++ b/src/Werkr.Api/Program.cs @@ -1,9 +1,13 @@ using System.Reflection; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Hosting.Server; using Microsoft.AspNetCore.Hosting.Server.Features; +using Microsoft.AspNetCore.Server.Kestrel.Core; using Microsoft.EntityFrameworkCore; using Serilog; using Serilog.Settings.Configuration; +using Serilog.Sinks.OpenTelemetry; using Werkr.Api.Authorization; using Werkr.Api.Endpoints; using Werkr.Api.Interceptors; @@ -19,11 +23,15 @@ using Werkr.Core.Cryptography; using Werkr.Core.Health; using Werkr.Core.Notifications; +using Werkr.Core.Notifications.Channels; using Werkr.Core.Registration; using Werkr.Core.Retention; +using Werkr.Core.Retention.Providers; using Werkr.Core.Scheduling; using Werkr.Core.Security; using Werkr.Core.Tasks; +using Werkr.Core.Triggers; +using Werkr.Core.Workflows; using Werkr.Data; using Werkr.Data.Encryption; using Werkr.Data.Seeding; @@ -59,9 +67,9 @@ public static async Task Main( string[] args ) { // Serilog (ConfigurationReaderOptions required for single-file publish) ConfigurationReaderOptions readerOptions = new( - typeof( Serilog.ConsoleLoggerConfigurationExtensions ).Assembly, - typeof( Serilog.FileLoggerConfigurationExtensions ).Assembly, - typeof( Serilog.Sinks.OpenTelemetry.OtlpProtocol ).Assembly ); + typeof(ConsoleLoggerConfigurationExtensions).Assembly, + typeof(FileLoggerConfigurationExtensions).Assembly, + typeof(OtlpProtocol).Assembly); _ = builder.Host.UseSerilog( ( ctx, lc ) => lc .ReadFrom.Configuration( ctx.Configuration, readerOptions ) ); @@ -86,15 +94,20 @@ public static async Task Main( string[] args ) { // environment variables. Outside containers, the dev cert handles TLS. _ = builder.WebHost.ConfigureKestrel( options => { options.ConfigureEndpointDefaults( listenOptions => { - listenOptions.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1AndHttp2; + listenOptions.Protocols = HttpProtocols.Http1AndHttp2; } ); } ); // Database — provider is configurable via Database:Provider (default: Postgres) string connectionString = builder.Configuration.GetConnectionString( "werkrdb" ) ?? string.Empty; DatabaseProvider dbProvider = Enum.TryParse( - builder.Configuration["Database:Provider"], ignoreCase: true, out DatabaseProvider parsed ) - ? parsed : DatabaseProvider.Postgres; + builder.Configuration["Database:Provider"], + ignoreCase: true, + out DatabaseProvider parsed + ) + ? parsed + : DatabaseProvider.Postgres; + _ = builder.Services.AddWerkrDbContext( dbProvider, connectionString ); // Field-level encryption — transparently encrypts sensitive DB columns @@ -116,20 +129,29 @@ await apiSecretStore.SetSecretAsync( builder.Configuration.GetSection( WerkrConfiguration.SectionName ).Bind( werkrConfig ); // JWT Bearer Authentication (validation only — Server issues tokens) + // Agent gRPC calls authenticate via AgentBearerTokenInterceptor (API-key hash), + // not JWT. Skip JWT validation for agent requests to avoid SecurityTokenMalformedException noise. _ = builder.Services.AddAuthentication( options => { - options.DefaultAuthenticateScheme = - Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerDefaults.AuthenticationScheme; - options.DefaultChallengeScheme = - Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerDefaults.AuthenticationScheme; + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; } ) .AddJwtBearer( options => { options.TokenValidationParameters = JwtValidationConfigurator.GetParameters( builder.Configuration ); + options.Events = new JwtBearerEvents { + OnMessageReceived = context => { + // Agent gRPC requests include x-werkr-connection-id; skip JWT parsing for those. + if (context.Request.Headers.ContainsKey( "x-werkr-connection-id" )) { + context.NoResult( ); + } + return Task.CompletedTask; + }, + }; } ); // Permission-based authorization (claims-based handler — no identity DB queries) _ = builder.Services.AddAuthorization( options => options.AddWerkrPermissionPolicies( ) ); - _ = builder.Services.AddSingleton( ); // Named HttpClient for proxying token requests to the Server @@ -205,13 +227,13 @@ await apiSecretStore.SetSecretAsync( _ = builder.Services.AddScoped( ); // Workflow services (Scoped — one per request) - _ = builder.Services.AddScoped( ); - _ = builder.Services.AddScoped( ); - _ = builder.Services.AddScoped( ); - _ = builder.Services.AddScoped( ); + _ = builder.Services.AddScoped( ); + _ = builder.Services.AddScoped( ); + _ = builder.Services.AddScoped( ); + _ = builder.Services.AddScoped( ); // Trigger versioning service (Scoped) - _ = builder.Services.AddScoped( ); + _ = builder.Services.AddScoped( ); // Agent notification outbox (Scoped — participates in caller's transaction) _ = builder.Services.AddScoped( ); @@ -248,15 +270,15 @@ await apiSecretStore.SetSecretAsync( _ = builder.Services.AddSingleton( notificationEventRegistry ); // Notification channel implementations (multi-registration for channel resolver) - _ = builder.Services.AddScoped( ); - _ = builder.Services.AddScoped( sp => { + _ = builder.Services.AddScoped( ); + _ = builder.Services.AddScoped( sp => { WerkrDbContext db = sp.GetRequiredService( ); - ILogger log = sp.GetRequiredService>( ); + ILogger log = sp.GetRequiredService>(); IHttpClientFactory httpFactory = sp.GetRequiredService( ); HttpClient httpClient = httpFactory.CreateClient( "WerkrNotifications" ); - return new Werkr.Core.Notifications.Channels.WebhookNotificationChannel( httpClient, db, log ); + return new WebhookNotificationChannel( httpClient, db, log ); } ); - _ = builder.Services.AddScoped( ); + _ = builder.Services.AddScoped( ); _ = builder.Services.AddSingleton( ); // Notification delivery pipeline @@ -264,22 +286,22 @@ await apiSecretStore.SetSecretAsync( _ = builder.Services.AddScoped( ); // Notification retry background service - _ = builder.Services.AddSingleton( sp => { + _ = builder.Services.AddSingleton( sp => { IServiceScopeFactory scopeFactory = sp.GetRequiredService( ); - ILogger retryLogger = sp.GetRequiredService>( ); - return new Werkr.Api.Services.NotificationRetryService( scopeFactory, retryLogger ); + ILogger retryLogger = sp.GetRequiredService>(); + return new NotificationRetryService( scopeFactory, retryLogger ); } ); - _ = builder.Services.AddHostedService( sp => sp.GetRequiredService( ) ); + _ = builder.Services.AddHostedService( sp => sp.GetRequiredService( ) ); // Retention framework — policy-driven data lifecycle management RetentionPolicyRegistry retentionRegistry = new( ); _ = builder.Services.AddSingleton( retentionRegistry ); - _ = builder.Services.AddScoped( ); - _ = builder.Services.AddScoped( ); - _ = builder.Services.AddScoped( ); - _ = builder.Services.AddScoped( ); - _ = builder.Services.AddScoped( ); - _ = builder.Services.AddScoped( ); + _ = builder.Services.AddScoped( ); + _ = builder.Services.AddScoped( ); + _ = builder.Services.AddScoped( ); + _ = builder.Services.AddScoped( ); + _ = builder.Services.AddScoped( ); + _ = builder.Services.AddScoped( ); _ = builder.Services.AddSingleton( sp => { IServiceScopeFactory scopeFactory = sp.GetRequiredService( ); ILogger retentionLogger = sp.GetRequiredService>( ); @@ -325,22 +347,22 @@ await apiSecretStore.SetSecretAsync( await TaskVersionSeeder.SeedAsync( app.Services ); // Seed workflow versions for pre-versioning workflows - await Werkr.Data.Seeding.WorkflowVersionSeeder.SeedAsync( app.Services ); + await WorkflowVersionSeeder.SeedAsync( app.Services ); // Seed trigger versions for pre-versioning triggers - await Werkr.Data.Seeding.TriggerVersionSeeder.SeedAsync( app.Services ); + await TriggerVersionSeeder.SeedAsync( app.Services ); // Seed configuration entries (migrates legacy ConfigurationSettings) - await Werkr.Data.Seeding.ConfigurationSeeder.SeedAsync( app.Services ); + await ConfigurationSeeder.SeedAsync( app.Services ); // Seed retention policies - await Werkr.Data.Seeding.RetentionPolicySeeder.SeedAsync( app.Services ); + await RetentionPolicySeeder.SeedAsync( app.Services ); // Seed notification templates - await Werkr.Data.Seeding.NotificationTemplateSeeder.SeedAsync( app.Services ); + await NotificationTemplateSeeder.SeedAsync( app.Services ); // Migrate per-agent path allowlists to ConfigurationEntry - await Werkr.Data.Seeding.PathAllowlistMigrationSeeder.SeedAsync( app.Services ); + await PathAllowlistMigrationSeeder.SeedAsync( app.Services ); // Configure the HTTP request pipeline. _ = app.UseExceptionHandler( ); diff --git a/src/Werkr.Api/packages.lock.json b/src/Werkr.Api/packages.lock.json index 02e39eb..deac480 100644 --- a/src/Werkr.Api/packages.lock.json +++ b/src/Werkr.Api/packages.lock.json @@ -56,11 +56,11 @@ }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Direct", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "prBU72cIP4V8E9fhN+o/YdskTsLeIcnKPbhZf0X6mD7fdxoZqnS/NdEkSr+9Zp+2q7OZBOMfNBKGbTbhXODO4w==", + "requested": "[8.17.0, )", + "resolved": "8.17.0", + "contentHash": "JbFZ3OVwtvqcqgBL0cIkhRYbIP7u9GIUYLOgbNqLWtBtZY8tGDpdGyXMzUVX0gVHq1ovuHsKZrkVv+ziHEnBHw==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "8.16.0" + "Microsoft.IdentityModel.Tokens": "8.17.0" } }, "Serilog.AspNetCore": { @@ -310,15 +310,15 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "gSxKLWRZzBpIsEoeUPkxfywNCCvRvl7hkq146XHPk5vOQc9izSf1I+uL1vh4y2U19QPxd9Z8K/8AdWyxYz2lSg==" + "resolved": "8.17.0", + "contentHash": "6NrxQGcZg6IunkN8K2F0UVMavNpfCjbjjjON7PYcL8FwI8aULKUreiHsRX/yaA8j3XsTJnQKUYpoQk5gBjULZw==" }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "MTzXmETkNQPACR7/XCXM1OGM6oU9RkyibqeJRtO9Ndew2LnGjMf9Atqj2VSf4XC27X0FQycUAlzxxEgQMWn2xQ==", + "resolved": "8.17.0", + "contentHash": "w1vjfri0BWqW7RkSZY3ZsqekNfIJJg5BQSFs2j+a+pCXOVrkezmJcn74pT3djwjXJh71577C6wJQgNc2UPz30w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.16.0" + "Microsoft.IdentityModel.Abstractions": "8.17.0" } }, "Microsoft.IdentityModel.Protocols": { @@ -377,23 +377,23 @@ }, "OpenTelemetry": { "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "7mS/oZFF8S6xyqGQfMU1btp0nXJQUPWV535Vp/XMLYwRAUv36xQN+U4vufWBF1+z4HnRTOwuFHtUSGnHbyN6FQ==", + "resolved": "1.15.1", + "contentHash": "oJCqFTS/9S70TGPoamdGJRvw5hLOn6I/XC4X0npDErl2sHDlAg030ArJkIHIuLFCTO5GWqj1uDhsZNjO36xMxg==", "dependencies": { - "OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.0" + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.1" } }, "OpenTelemetry.Api": { "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "vk5OGdf6K9kQScCWo3bRjhDWCv6Pqw92IpX4dlARZ8B1WL7/2NGTDtCkkw42eQf7UdwyoHKzVvMH/PtL8d6z7w==" + "resolved": "1.15.1", + "contentHash": "+LJP0YBrysh4kPCRZhEyTUTcd+FFP0NPDvV4AzULBmiInGt6fp+RgBieRhUzVX/yyVEyshg3s82RWFYZJIkeGQ==" }, "OpenTelemetry.Api.ProviderBuilderExtensions": { "type": "Transitive", - "resolved": "1.15.0", - "contentHash": "OnuSUlRpGvowkOzGFQfy+KZFu0cITfKfh2IYJJiZskxVJiOuexwOOuvfDAgpJdmTzVWAHjYdz2shcHZaJ06UjQ==", + "resolved": "1.15.1", + "contentHash": "aZedpOfXtHmVSWlebxJBeJg2DCdzds86mMowBTS6l+sjwV9LvQuZa0JDU9+S7FQvta4hnauxlCEYplbiDiYGeg==", "dependencies": { - "OpenTelemetry.Api": "1.15.0" + "OpenTelemetry.Api": "1.15.1" } }, "Polly.Core": { @@ -558,7 +558,7 @@ "type": "Project", "dependencies": { "Google.Protobuf": "[3.34.1, )", - "Microsoft.IdentityModel.Tokens": "[8.16.0, )", + "Microsoft.IdentityModel.Tokens": "[8.17.0, )", "TimeZoneNames": "[7.0.0, )", "Werkr.Common.Configuration": "[1.0.0, )" } @@ -591,8 +591,8 @@ "dependencies": { "Microsoft.Extensions.Http.Resilience": "[10.4.0, )", "Microsoft.Extensions.ServiceDiscovery": "[10.4.0, )", - "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.15.0, )", - "OpenTelemetry.Extensions.Hosting": "[1.15.0, )", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.15.1, )", + "OpenTelemetry.Extensions.Hosting": "[1.15.1, )", "OpenTelemetry.Instrumentation.AspNetCore": "[1.15.1, )", "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.15.0-beta.1, )", "OpenTelemetry.Instrumentation.GrpcNetClient": "[1.15.0-beta.1, )", @@ -695,11 +695,11 @@ }, "Microsoft.IdentityModel.Tokens": { "type": "CentralTransitive", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "rtViGJcGsN7WcfUNErwNeQgjuU5cJNl6FDQsfi9TncwO+Epzn0FTfBsg3YuFW1Q0Ch/KPxaVdjLw3/+5Z5ceFQ==", + "requested": "[8.17.0, )", + "resolved": "8.17.0", + "contentHash": "teaW35URIV2x78Tzk+dVJiC4M62/9mQoSEoDjDGoEZmcQa3H2rE+XQpm9Tmdo9KK1Lcrnve4zoyLavl69kCFGg==", "dependencies": { - "Microsoft.IdentityModel.Logging": "8.16.0" + "Microsoft.IdentityModel.Logging": "8.17.0" } }, "Npgsql.EntityFrameworkCore.PostgreSQL": { @@ -715,20 +715,20 @@ }, "OpenTelemetry.Exporter.OpenTelemetryProtocol": { "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "VH8ANc/js9IRvfYt0Q2UaAxNCOWm+IU+vWrtoH7pfx4oWPVdISUt+9uWfBCFMWZg5WzQip5dhslyDjeyZXXfSQ==", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "400L64MwDd1s2bj4fFJblo3Hf5rXE3bhJUlOSBcLF6QP1Ln116Eqnwnesxhg2siDxOgHYLjcfCC8ByJTDEpNFQ==", "dependencies": { - "OpenTelemetry": "1.15.0" + "OpenTelemetry": "1.15.1" } }, "OpenTelemetry.Extensions.Hosting": { "type": "CentralTransitive", - "requested": "[1.15.0, )", - "resolved": "1.15.0", - "contentHash": "RixjKyB1pbYGhWdvPto4KJs+exdQknJsnjUO9WszdLles5Vcd0EYzxPNJdwmLjYfP+Jfbr4B5nktM4ZgeHSWtg==", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "/mN9I16P8miDSHogFC0OFyPzUvYXibk/rLFLXW3Io50IN+XEQx7E6dSyUdMRdY+NKmOCo/oS5ICXkjdoFrwq2A==", "dependencies": { - "OpenTelemetry": "1.15.0" + "OpenTelemetry": "1.15.1" } }, "OpenTelemetry.Instrumentation.AspNetCore": { diff --git a/src/Werkr.AppHost/Werkr.AppHost.csproj b/src/Werkr.AppHost/Werkr.AppHost.csproj index 261a9f8..1e19cc6 100644 --- a/src/Werkr.AppHost/Werkr.AppHost.csproj +++ b/src/Werkr.AppHost/Werkr.AppHost.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/src/Werkr.AppHost/packages.lock.json b/src/Werkr.AppHost/packages.lock.json index 720068b..18c0a75 100644 --- a/src/Werkr.AppHost/packages.lock.json +++ b/src/Werkr.AppHost/packages.lock.json @@ -4,112 +4,115 @@ "net10.0": { "Aspire.Dashboard.Sdk.win-arm64": { "type": "Direct", - "requested": "[13.1.2, )", - "resolved": "13.1.2", - "contentHash": "Sltiw6We9iia/isJItRmZ2ATfNJFPmEYiXFT5lzDL6Iu7vc/p/dge0SbUshY1SCLxWilwVCe0uv9WQyzoN+nWg==" + "requested": "[13.2.0, )", + "resolved": "13.2.0", + "contentHash": "kSFGsymjK18ztPo2mIptYtTVPh+1pwuTLOBbUx+KnNmx/rLkQKfYeHf/g51Iqf3ZHxSxwkEkbKR+OKtj3pNwlg==" }, "Aspire.Hosting.AppHost": { "type": "Direct", - "requested": "[13.1.2, )", - "resolved": "13.1.2", - "contentHash": "w4VCvBM7aHEN6xogV+G4ie4SxTTeLDuZEf0tze6kqYT4tf9jfTh+SPO00vLnZLS4gX+rUfUOTGuO56jwzIaawA==", + "requested": "[13.2.0, )", + "resolved": "13.2.0", + "contentHash": "IEznpbUYSjtdMQcftEQkfp+e2MbjbGWc41GdmCGmjs2paHAAHnobmFBM+iiocMyHk18ZgZL/yaTL2udaaDbrVA==", "dependencies": { "AspNetCore.HealthChecks.Uris": "9.0.0", - "Aspire.Hosting": "13.1.2", - "Google.Protobuf": "3.33.0", - "Grpc.AspNetCore": "2.71.0", - "Grpc.Net.ClientFactory": "2.71.0", - "Grpc.Tools": "2.72.0", + "Aspire.Hosting": "13.2.0", + "Google.Protobuf": "3.33.5", + "Grpc.AspNetCore": "2.76.0", + "Grpc.Net.ClientFactory": "2.76.0", + "Grpc.Tools": "2.78.0", "Humanizer.Core": "2.14.1", "JsonPatch.Net": "3.3.0", - "KubernetesClient": "18.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.1", - "Microsoft.Extensions.Configuration.Binder": "10.0.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1", - "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.1", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.1", - "Microsoft.Extensions.Hosting": "10.0.1", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.1", - "Microsoft.Extensions.Http": "10.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.1", - "Microsoft.Extensions.Options": "10.0.1", - "Microsoft.Extensions.Primitives": "10.0.1", + "KubernetesClient": "18.0.13", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.Binder": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.5", + "Microsoft.Extensions.FileSystemGlobbing": "10.0.5", + "Microsoft.Extensions.Hosting": "10.0.5", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.5", + "Microsoft.Extensions.Http": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5", + "ModelContextProtocol": "1.0.0", "Newtonsoft.Json": "13.0.4", - "Polly.Core": "8.6.4", + "Polly.Core": "8.6.5", "Semver": "3.0.0", "StreamJsonRpc": "2.22.23", - "System.IO.Hashing": "9.0.10" + "System.IO.Hashing": "10.0.3" } }, "Aspire.Hosting.Orchestration.win-arm64": { "type": "Direct", - "requested": "[13.1.2, )", - "resolved": "13.1.2", - "contentHash": "khjFSK2xbPR1S5sLG4XcDqyi/7TCQAyL8xkAmmFJt/aG0yFvVeqXXGokutz/YEEit0QpAeyuiPjWTpKIX70vPg==" + "requested": "[13.2.0, )", + "resolved": "13.2.0", + "contentHash": "AwHCuMOdW9H+l2Thnbyps6PoClw6/RMevGnOlH1/FGNbAQgSXvzUf7ao5XuBvW5GLNWzRAehRyvUfCSot6L6Cg==" }, "Aspire.Hosting.PostgreSQL": { "type": "Direct", - "requested": "[13.1.3, )", - "resolved": "13.1.3", - "contentHash": "9W+/S1PMNYJPzUHIWOE/xKe1b65BkS0ToImPb/dDmhuQ2QS+xjOsgMN610ufPuuzQNMeWJXV0dJaApjsPuikRA==", + "requested": "[13.2.0, )", + "resolved": "13.2.0", + "contentHash": "J9cMNPbyItkqV/Z5WAL7+ndxL0MHOn6Klm9XeArbQtdg3Pmaf93CFJs9Gz9KI/7NqwKfbr9rNFZnnIVL8f2tVQ==", "dependencies": { "AspNetCore.HealthChecks.NpgSql": "9.0.0", "AspNetCore.HealthChecks.Uris": "9.0.0", - "Aspire.Hosting": "13.1.3", - "Google.Protobuf": "3.33.0", - "Grpc.AspNetCore": "2.71.0", - "Grpc.Net.ClientFactory": "2.71.0", - "Grpc.Tools": "2.72.0", + "Aspire.Hosting": "13.2.0", + "Google.Protobuf": "3.33.5", + "Grpc.AspNetCore": "2.76.0", + "Grpc.Net.ClientFactory": "2.76.0", + "Grpc.Tools": "2.78.0", "Humanizer.Core": "2.14.1", "JsonPatch.Net": "3.3.0", - "KubernetesClient": "18.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.Configuration.Binder": "8.0.2", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.22", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.1", - "Microsoft.Extensions.Hosting": "8.0.1", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Http": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "8.0.3", - "Microsoft.Extensions.Options": "8.0.2", - "Microsoft.Extensions.Primitives": "8.0.0", + "KubernetesClient": "18.0.13", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.Binder": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.25", + "Microsoft.Extensions.FileSystemGlobbing": "10.0.5", + "Microsoft.Extensions.Hosting": "10.0.5", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.5", + "Microsoft.Extensions.Http": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5", + "ModelContextProtocol": "1.0.0", "Newtonsoft.Json": "13.0.4", - "Polly.Core": "8.6.4", + "Polly.Core": "8.6.5", "Semver": "3.0.0", "StreamJsonRpc": "2.22.23", - "System.IO.Hashing": "9.0.10" + "System.IO.Hashing": "10.0.3" } }, "Aspire.Hosting": { "type": "Transitive", - "resolved": "13.1.3", - "contentHash": "ZG8bZ2pye3dpmW8le+PMOK2dorwXSnpJveoOmkQ2OMps0GC6Bm2bZZIfVQg66nu4feA1zpV4TmNGX0IcW2GhZg==", + "resolved": "13.2.0", + "contentHash": "qVoof8K3ZLp3mtt28ZPOwKzlrX4Gn7Ux7DhtozPAbfwRXBP3wjwTI/XaoaRHbzuuEJmqRz8SaLfDzhJL9mmK2g==", "dependencies": { "AspNetCore.HealthChecks.Uris": "9.0.0", - "Google.Protobuf": "3.33.0", - "Grpc.AspNetCore": "2.71.0", - "Grpc.Net.ClientFactory": "2.71.0", - "Grpc.Tools": "2.72.0", + "Google.Protobuf": "3.33.5", + "Grpc.AspNetCore": "2.76.0", + "Grpc.Net.ClientFactory": "2.76.0", + "Grpc.Tools": "2.78.0", "Humanizer.Core": "2.14.1", "JsonPatch.Net": "3.3.0", - "KubernetesClient": "18.0.5", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.Configuration.Binder": "8.0.2", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.22", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.1", - "Microsoft.Extensions.Hosting": "8.0.1", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Http": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "8.0.3", - "Microsoft.Extensions.Options": "8.0.2", - "Microsoft.Extensions.Primitives": "8.0.0", + "KubernetesClient": "18.0.13", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.Binder": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.25", + "Microsoft.Extensions.FileSystemGlobbing": "10.0.5", + "Microsoft.Extensions.Hosting": "10.0.5", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.5", + "Microsoft.Extensions.Http": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5", + "ModelContextProtocol": "1.0.0", "Newtonsoft.Json": "13.0.4", - "Polly.Core": "8.6.4", + "Polly.Core": "8.6.5", "Semver": "3.0.0", "StreamJsonRpc": "2.22.23", - "System.IO.Hashing": "9.0.10" + "System.IO.Hashing": "10.0.3" } }, "AspNetCore.HealthChecks.NpgSql": { @@ -194,8 +197,8 @@ }, "KubernetesClient": { "type": "Transitive", - "resolved": "18.0.5", - "contentHash": "xkttIbnGNibYwAyZ0sqeQle2w90bfaJrkF8BaURWHfSMKPbHwys9t/wq1XmT64eA4WRVXLENYlXtqmWlEstG6A==", + "resolved": "18.0.13", + "contentHash": "X5IuxmydftB148XeULtc7rD5/RvqLuW5SzkIjFovPgJpvV4RAoRqNPruVB7GEFu1Xg+zHVIk88WqdV8JjbgHbA==", "dependencies": { "Fractions": "7.3.0", "YamlDotNet": "16.3.0" @@ -215,6 +218,19 @@ "resolved": "2.5.192", "contentHash": "jaJuwcgovWIZ8Zysdyf3b7b34/BrADw4v82GaEZymUhDd3ScMPrYd/cttekeDteJJPXseJxp04yTIcxiVUjTWg==" }, + "Microsoft.Extensions.AI.Abstractions": { + "type": "Transitive", + "resolved": "10.3.0", + "contentHash": "hDjDvUERvUH3HBMs2MDusOcGJBjAHOG5pJIU2x/HZEa4e1UthNKt89cwMi3B+ogJo6skki1XFjfgGN3ksnVqvQ==" + }, + "Microsoft.Extensions.Caching.Abstractions": { + "type": "Transitive", + "resolved": "10.0.3", + "contentHash": "5dtXBvI8t3z8pF4tB38JYgi/enCL/DwSXxpqShgFz3SHJ7IzqFIMs6Gu5ik8sNZzcO9qQs3xIDpB3vDamkYG+Q==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.3" + } + }, "Microsoft.Extensions.Configuration": { "type": "Transitive", "resolved": "10.0.5", @@ -226,29 +242,29 @@ }, "Microsoft.Extensions.Configuration.Binder": { "type": "Transitive", - "resolved": "10.0.4", - "contentHash": "ilnL/kQn62Gx3OZCVT7SJrBNi0CRIhS8VEunmE6i/a9lp9l/eos+hpxMvCW4iX2aVc/NWeDhxuQusZL7zvmKIg==", + "resolved": "10.0.5", + "contentHash": "99Z4rjyXopb1MIazDSPcvwYCUdYNO01Cf1GUs2WUjIFAbkGmwzj2vPa2k+3pheJRV+YgNd2QqRKHAri0oBAU4Q==", "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.4", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.4" + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" } }, "Microsoft.Extensions.Configuration.CommandLine": { "type": "Transitive", - "resolved": "10.0.1", - "contentHash": "s5cxcdtIig66YT3J+7iHflMuorznK8kXuwBBPHMp4KImx5ZGE3FRa1Nj9fI/xMwFV+KzUMjqZ2MhOedPH8LiBQ==", + "resolved": "10.0.5", + "contentHash": "or9fOLopMUTJOQVJ3bou4aD6PwvsiKf4kZC4EE5sRRKSkmh+wfk/LekJXRjAX88X+1JA9zHjDo+5fiQ7z3MY/A==", "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.1", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.1" + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" } }, "Microsoft.Extensions.Configuration.EnvironmentVariables": { "type": "Transitive", - "resolved": "10.0.1", - "contentHash": "csD8Eps3HQ3yc0x6NhgTV+aIFKSs3qVlVCtFnMHz/JOjnv7eEj/qSXKXiK9LzBzB1qSfAVqFnB5iaX2nUmagIQ==", + "resolved": "10.0.5", + "contentHash": "tchMGQ+zVTO40np/Zzg2Li/TIR8bksQgg4UVXZa0OzeFCKWnIYtxE2FVs+eSmjPGCjMS2voZbwN/mUcYfpSTuA==", "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.1", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.1" + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5" } }, "Microsoft.Extensions.Configuration.FileExtensions": { @@ -265,13 +281,13 @@ }, "Microsoft.Extensions.Configuration.UserSecrets": { "type": "Transitive", - "resolved": "10.0.1", - "contentHash": "ULEJ0nkaW90JYJGkFujPcJtADXcJpXiSOLbokPcWJZ8iDbtDINifEYAUVqZVr81IDNTrRFul6O8RolOKOsgFPg==", + "resolved": "10.0.5", + "contentHash": "fhdG6UV9lIp70QhNkVyaHciUVq25IPFkczheVJL9bIFvmnJ+Zghaie6dWkDbbVmxZlHl9gj3zTDxMxJs5zNhIA==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.1", - "Microsoft.Extensions.Configuration.Json": "10.0.1", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.1", - "Microsoft.Extensions.FileProviders.Physical": "10.0.1" + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.Json": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Physical": "10.0.5" } }, "Microsoft.Extensions.DependencyInjection": { @@ -289,12 +305,12 @@ }, "Microsoft.Extensions.Diagnostics": { "type": "Transitive", - "resolved": "10.0.4", - "contentHash": "R9W7AttMedwOwJ7wRqTGBoVbX2JmlyWA+LJQUhizmS7Be9f6EJUn/+lvaIYDrOYtA1UzAfrwU871hpvZSPyIkg==", + "resolved": "10.0.5", + "contentHash": "vAJHd4yOpmKoK+jBuYV7a3y+Ab9U4ARCc29b6qvMy276RgJFw9LFs0DdsPqOL3ahwzyrX7tM+i4cCxU/RX0qAg==", "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.4", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.4", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.4" + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.5", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.5" } }, "Microsoft.Extensions.Diagnostics.Abstractions": { @@ -308,19 +324,19 @@ }, "Microsoft.Extensions.Diagnostics.HealthChecks": { "type": "Transitive", - "resolved": "10.0.1", - "contentHash": "LMQ1mW8YvfupNwoWXk+IOtjYTUllUIrETrWslKOsV66RvD96WaePcCcuF7SmB6fcTOuJFsSu/zILIUJGM+fM/Q==", + "resolved": "10.0.5", + "contentHash": "REdt95QXHscGdtw/UUgyCW2lF9DJcAOJxmebKW2IkgUjuCAdMODIi2HNOWg5utW98nm8ekgV0Gjqs/sljwwqMw==", "dependencies": { - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "10.0.1", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.1", - "Microsoft.Extensions.Options": "10.0.1" + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "10.0.5", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" } }, "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": { "type": "Transitive", - "resolved": "10.0.1", - "contentHash": "cebN2lQD6S7XCQ7DFKnXcBHxSfqWr38H9YliEluJIDRTJ99Q9V6gBMXBYx03kh6YJAzfN3JoEcsikpEWnC6VwA==" + "resolved": "10.0.5", + "contentHash": "NrIMTy7dpqxAvA6kHAYH8cXID/YgeNOy0OqFKpLtkPu5X4WS/basX91UszANzVrMNRAICJ2GOnGiRxJtsRyEQw==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -347,31 +363,31 @@ }, "Microsoft.Extensions.Hosting": { "type": "Transitive", - "resolved": "10.0.1", - "contentHash": "0jjfjQSOFZlHhwOoIQw0WyzxtkDMYdnPY3iFrOLasxYq/5J4FDt1HWT8TktBclOVjFY1FOOkoOc99X7AhbqSIw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.1", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.1", - "Microsoft.Extensions.Configuration.Binder": "10.0.1", - "Microsoft.Extensions.Configuration.CommandLine": "10.0.1", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.1", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.1", - "Microsoft.Extensions.Configuration.Json": "10.0.1", - "Microsoft.Extensions.Configuration.UserSecrets": "10.0.1", - "Microsoft.Extensions.DependencyInjection": "10.0.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1", - "Microsoft.Extensions.Diagnostics": "10.0.1", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.1", - "Microsoft.Extensions.FileProviders.Physical": "10.0.1", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.1", - "Microsoft.Extensions.Logging": "10.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.1", - "Microsoft.Extensions.Logging.Configuration": "10.0.1", - "Microsoft.Extensions.Logging.Console": "10.0.1", - "Microsoft.Extensions.Logging.Debug": "10.0.1", - "Microsoft.Extensions.Logging.EventLog": "10.0.1", - "Microsoft.Extensions.Logging.EventSource": "10.0.1", - "Microsoft.Extensions.Options": "10.0.1" + "resolved": "10.0.5", + "contentHash": "8i7e5IBdiKLNqt/+ciWrS8U95Rv5DClaaj7ulkZbimnCi4uREWd+lXzkp3joofFuIPOlAzV4AckxLTIELv2jdg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.Binder": "10.0.5", + "Microsoft.Extensions.Configuration.CommandLine": "10.0.5", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.5", + "Microsoft.Extensions.Configuration.FileExtensions": "10.0.5", + "Microsoft.Extensions.Configuration.Json": "10.0.5", + "Microsoft.Extensions.Configuration.UserSecrets": "10.0.5", + "Microsoft.Extensions.DependencyInjection": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Diagnostics": "10.0.5", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.5", + "Microsoft.Extensions.FileProviders.Physical": "10.0.5", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Configuration": "10.0.5", + "Microsoft.Extensions.Logging.Console": "10.0.5", + "Microsoft.Extensions.Logging.Debug": "10.0.5", + "Microsoft.Extensions.Logging.EventLog": "10.0.5", + "Microsoft.Extensions.Logging.EventSource": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" } }, "Microsoft.Extensions.Logging": { @@ -386,53 +402,53 @@ }, "Microsoft.Extensions.Logging.Configuration": { "type": "Transitive", - "resolved": "10.0.1", - "contentHash": "Zg8LLnfZs5o2RCHD/+9NfDtJ40swauemwCa7sI8gQoAye/UJHRZNpCtC7a5XE7l9Z7mdI8iMWnLZ6m7Q6S3jLg==", + "resolved": "10.0.5", + "contentHash": "cSgxsDgfP0+gmVRPVoNHI/KIDavIZxh+CxE6tSLPlYTogqccDnjBFI9CgEsiNuMP6+fiuXUwhhlTz36uUEpwbQ==", "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.1", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.1", - "Microsoft.Extensions.Configuration.Binder": "10.0.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1", - "Microsoft.Extensions.Logging": "10.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.1", - "Microsoft.Extensions.Options": "10.0.1", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.1" + "Microsoft.Extensions.Configuration": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.Binder": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.5" } }, "Microsoft.Extensions.Logging.Console": { "type": "Transitive", - "resolved": "10.0.1", - "contentHash": "38Q8sEHwQ/+wVO/mwQBa0fcdHbezFpusHE+vBw/dSr6Fq/kzZm3H/NQX511Jki/R3FHd64IY559gdlHZQtYeEA==", + "resolved": "10.0.5", + "contentHash": "PMs2gha2v24hvH5o5KQem5aNK4mN0BhhCWlMqsg9tzifWKzjeQi2tyPOP/RaWMVvalOhVLcrmoMYPqbnia/epg==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1", - "Microsoft.Extensions.Logging": "10.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.1", - "Microsoft.Extensions.Logging.Configuration": "10.0.1", - "Microsoft.Extensions.Options": "10.0.1" + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Configuration": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" } }, "Microsoft.Extensions.Logging.EventLog": { "type": "Transitive", - "resolved": "10.0.1", - "contentHash": "Zp9MM+jFCa7oktIug62V9eNygpkf+6kFVatF+UC/ODeUwIr5givYKy8fYSSI9sWdxqDqv63y1x0mm2VjOl8GOw==", + "resolved": "10.0.5", + "contentHash": "0ezhWYJS4/6KrqQel9JL+Tr4n+4EX2TF5EYiaysBWNNEM2c3Gtj1moD39esfgk8OHblSX+UFjtZ3z0c4i9tRvw==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1", - "Microsoft.Extensions.Logging": "10.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.1", - "Microsoft.Extensions.Options": "10.0.1", - "System.Diagnostics.EventLog": "10.0.1" + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "System.Diagnostics.EventLog": "10.0.5" } }, "Microsoft.Extensions.Logging.EventSource": { "type": "Transitive", - "resolved": "10.0.1", - "contentHash": "WnFvZP+Y+lfeNFKPK/+mBpaCC7EeBDlobrQOqnP7rrw/+vE7yu8Rjczum1xbC0F/8cAHafog84DMp9200akMNQ==", + "resolved": "10.0.5", + "contentHash": "vN+aq1hBFXyYvY5Ow9WyeR66drKQxRZmas4lAjh6QWfryPkjTn1uLtX5AFIxyDaZj78v5TG2sELUyvrXpAPQQw==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1", - "Microsoft.Extensions.Logging": "10.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.1", - "Microsoft.Extensions.Options": "10.0.1", - "Microsoft.Extensions.Primitives": "10.0.1" + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" } }, "Microsoft.Extensions.Options": { @@ -446,14 +462,14 @@ }, "Microsoft.Extensions.Options.ConfigurationExtensions": { "type": "Transitive", - "resolved": "10.0.4", - "contentHash": "amQUITwSnkbMPxh/ngneNykz4UtytEOXo0M/pbwdBiQU57EAVvBV5PFI8r/dRastUj0yxHVwrH64N9ACR5SdGQ==", + "resolved": "10.0.5", + "contentHash": "BB9uUW3+6Rxu1R97OB1H/13lUF8P2+H1+eDhpZlK30kDh/6E4EKHBUqTp+ilXQmZLzsRErxON8aBSR6WpUKJdg==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", - "Microsoft.Extensions.Configuration.Binder": "10.0.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4", - "Microsoft.Extensions.Primitives": "10.0.4" + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Configuration.Binder": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" } }, "Microsoft.Extensions.Primitives": { @@ -479,6 +495,25 @@ "resolved": "17.8.8", "contentHash": "rWXThIpyQd4YIXghNkiv2+VLvzS+MCMKVRDR0GAMlflsdo+YcAN2g2r5U1Ah98OFjQMRexTFtXQQ2LkajxZi3g==" }, + "ModelContextProtocol": { + "type": "Transitive", + "resolved": "1.0.0", + "contentHash": "W7UX8AQ1qMjXyCDcpP25u/L1W2vIIgfhLX/B2ZtTU1VUyILXdmVbdRjkQesKVPT/wPMpYXIHUcZJTPdsGfKSfQ==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.3", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.3", + "ModelContextProtocol.Core": "1.0.0" + } + }, + "ModelContextProtocol.Core": { + "type": "Transitive", + "resolved": "1.0.0", + "contentHash": "QKboiQEq2MJMGeQ029Gy6xqge88abm0Px9lnG7hueOyf+EDCxi5SUATV+Df7GwT+NwWzkEsYG271bUQD+LGhEg==", + "dependencies": { + "Microsoft.Extensions.AI.Abstractions": "10.3.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.3" + } + }, "Nerdbank.Streams": { "type": "Transitive", "resolved": "2.12.87", @@ -503,8 +538,8 @@ }, "Polly.Core": { "type": "Transitive", - "resolved": "8.6.4", - "contentHash": "4AWqYnQ2TME0E+Mzovt1Uu+VyvpR84ymUldMcPw7Mbj799Phaag14CKrMtlJGx5jsvYP+S3oR1QmysgmXoD5cw==" + "resolved": "8.6.5", + "contentHash": "t+sUVrIwvo7UmsgHGgOG9F0GDZSRIm47u2ylH17Gvcv1q5hNEwgD5GoBlFyc0kh/pebmPyrAgvGsR/65ZBaXlg==" }, "Semver": { "type": "Transitive", @@ -528,13 +563,13 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.1", - "contentHash": "xfaHEHVDkMOOZR5S6ZGezD0+vekdH1Nx/9Ih8/rOqOGSOk1fxiN3u94bYkBW/wigj0Uw2Wt3vvRj9mtYdgwEjw==" + "resolved": "10.0.5", + "contentHash": "wugvy+pBVzjQEnRs9wMTWwoaeNFX3hsaHeVHFDIvJSWXp7wfmNWu3mxAwBIE6pyW+g6+rHa1Of5fTzb0QVqUTA==" }, "System.IO.Hashing": { "type": "Transitive", - "resolved": "9.0.10", - "contentHash": "9gv5z71xaWWmcGEs4bXdreIhKp2kYLK2fvPK5gQkgnWMYvZ8ieaxKofDjxL3scZiEYfi/yW2nJTiKV2awcWEdA==" + "resolved": "10.0.3", + "contentHash": "La6ICwsdTKhVX+LKN+pvFjQRR3LhLwq3uKdi2knjLzRyPYBSydF4cjXidYxIiTcDD6XVYdsBWQEI8ZxiZ/OdIg==" }, "YamlDotNet": { "type": "Transitive", @@ -620,16 +655,16 @@ }, "Microsoft.Extensions.Http": { "type": "CentralTransitive", - "requested": "[10.0.4, )", - "resolved": "10.0.4", - "contentHash": "QRbs+A+WfiGTnV9KFNfWlF+My5euQNZnsvdVMulwRN6C/tEPaF+ZlQfedHoNvFHKLwjQMmqwm4z+TSO9eLvRQw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.4", - "Microsoft.Extensions.Diagnostics": "10.0.4", - "Microsoft.Extensions.Logging": "10.0.4", - "Microsoft.Extensions.Logging.Abstractions": "10.0.4", - "Microsoft.Extensions.Options": "10.0.4" + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "AiFvHYM8nP0wPC7bGPI3NHQlSYSLqjjT7DMJUuuxhd+7pz3O89iu2gdQfgACy5DxsXENiok5i1bMacJL7KR8jA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Diagnostics": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" } }, "Microsoft.Extensions.Logging.Abstractions": { diff --git a/src/Werkr.Common/Models/Actions/ActionRegistry.cs b/src/Werkr.Common/Models/Actions/ActionRegistry.cs index 1613d09..ae4cee0 100644 --- a/src/Werkr.Common/Models/Actions/ActionRegistry.cs +++ b/src/Werkr.Common/Models/Actions/ActionRegistry.cs @@ -202,12 +202,6 @@ public static class ActionRegistry { new( "UsePolling", "Use Polling", FieldType.Bool, DefaultValue: "false", HelpText: "Recommended for network or UNC paths." ), ] ), - // ── Iteration operations ──────────────────────────────────── - new( "ForEach", "For Each", "Iterate over a collection, executing child steps for each item.", - "Iteration", typeof( ForEachParameters ), [ - new( "CollectionExpression", "Collection Expression", FieldType.Text, Required: true, - Placeholder: "$(items)", HelpText: "Expression resolving to the collection to iterate." ), - ] ), // ── Network operations ─────────────────────────────────────── new( "HttpRequest", "HTTP Request", "Send an HTTP request and capture the response.", diff --git a/src/Werkr.Common/Models/Actions/ForEachParameters.cs b/src/Werkr.Common/Models/Actions/ForEachParameters.cs deleted file mode 100644 index d77b450..0000000 --- a/src/Werkr.Common/Models/Actions/ForEachParameters.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Werkr.Common.Models.Actions; - -/// Parameters for the ForEach iteration action. -public sealed record ForEachParameters { - /// Expression that resolves to the collection to iterate over. - public required string CollectionExpression { get; init; } -} diff --git a/src/Werkr.Common/packages.lock.json b/src/Werkr.Common/packages.lock.json index 5699804..66e1677 100644 --- a/src/Werkr.Common/packages.lock.json +++ b/src/Werkr.Common/packages.lock.json @@ -40,12 +40,12 @@ }, "Microsoft.IdentityModel.Tokens": { "type": "Direct", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "rtViGJcGsN7WcfUNErwNeQgjuU5cJNl6FDQsfi9TncwO+Epzn0FTfBsg3YuFW1Q0Ch/KPxaVdjLw3/+5Z5ceFQ==", + "requested": "[8.17.0, )", + "resolved": "8.17.0", + "contentHash": "teaW35URIV2x78Tzk+dVJiC4M62/9mQoSEoDjDGoEZmcQa3H2rE+XQpm9Tmdo9KK1Lcrnve4zoyLavl69kCFGg==", "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.IdentityModel.Logging": "8.16.0" + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.17.0" } }, "TimeZoneNames": { @@ -167,15 +167,15 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "gSxKLWRZzBpIsEoeUPkxfywNCCvRvl7hkq146XHPk5vOQc9izSf1I+uL1vh4y2U19QPxd9Z8K/8AdWyxYz2lSg==" + "resolved": "8.17.0", + "contentHash": "6NrxQGcZg6IunkN8K2F0UVMavNpfCjbjjjON7PYcL8FwI8aULKUreiHsRX/yaA8j3XsTJnQKUYpoQk5gBjULZw==" }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "MTzXmETkNQPACR7/XCXM1OGM6oU9RkyibqeJRtO9Ndew2LnGjMf9Atqj2VSf4XC27X0FQycUAlzxxEgQMWn2xQ==", + "resolved": "8.17.0", + "contentHash": "w1vjfri0BWqW7RkSZY3ZsqekNfIJJg5BQSFs2j+a+pCXOVrkezmJcn74pT3djwjXJh71577C6wJQgNc2UPz30w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.16.0" + "Microsoft.IdentityModel.Abstractions": "8.17.0" } }, "TimeZoneConverter": { diff --git a/src/Werkr.Core/Audit/AuditService.cs b/src/Werkr.Core/Audit/AuditService.cs index 446afda..a299992 100644 --- a/src/Werkr.Core/Audit/AuditService.cs +++ b/src/Werkr.Core/Audit/AuditService.cs @@ -98,6 +98,16 @@ public async Task ExportAsync( AuditQuery query, ExportFormat format, Stream out } } + /// + public async Task> GetEntityTypesAsync( CancellationToken ct = default ) { + return await dbContext.AuditEvents + .Where( e => e.EntityType != null ) + .Select( e => e.EntityType! ) + .Distinct( ) + .OrderBy( t => t ) + .ToListAsync( ct ); + } + private IQueryable BuildQuery( AuditQuery query ) { IQueryable q = dbContext.AuditEvents; diff --git a/src/Werkr.Core/Audit/IAuditService.cs b/src/Werkr.Core/Audit/IAuditService.cs index 54e6056..f28352a 100644 --- a/src/Werkr.Core/Audit/IAuditService.cs +++ b/src/Werkr.Core/Audit/IAuditService.cs @@ -22,4 +22,9 @@ public interface IAuditService { /// Exports audit events as a stream (JSON or CSV). Optionally limited to rows. /// Task ExportAsync( AuditQuery query, ExportFormat format, Stream outputStream, CancellationToken ct = default, int? maxRows = null ); + + /// + /// Returns the distinct entity types that appear in the audit log, sorted alphabetically. + /// + Task> GetEntityTypesAsync( CancellationToken ct = default ); } diff --git a/src/Werkr.Core/Tasks/TaskVersionService.cs b/src/Werkr.Core/Tasks/TaskVersionService.cs index ebd0a55..d450c5c 100644 --- a/src/Werkr.Core/Tasks/TaskVersionService.cs +++ b/src/Werkr.Core/Tasks/TaskVersionService.cs @@ -38,10 +38,10 @@ public async Task CreateVersionAsync( ) { TaskDefinitionSnapshot snapshot = TaskDefinitionSnapshot.FromTask( task ); - const int maxRetries = 3; + const int MaxRetries = 3; TaskVersion? version = null; - for (int attempt = 0; attempt < maxRetries; attempt++) { + for (int attempt = 0; attempt < MaxRetries; attempt++) { int maxVersion = await dbContext.TaskVersions .Where( v => v.TaskId == task.Id ) .MaxAsync( v => (int?)v.VersionNumber, ct ) ?? 0; @@ -58,7 +58,7 @@ public async Task CreateVersionAsync( try { _ = await dbContext.SaveChangesAsync( ct ); break; - } catch (DbUpdateException ex) when (attempt < maxRetries - 1 && DbExceptionHelper.IsUniqueConstraintViolation( ex )) { + } catch (DbUpdateException ex) when (attempt < MaxRetries - 1 && DbExceptionHelper.IsUniqueConstraintViolation( ex )) { // Unique constraint violation — retry with fresh version number dbContext.ChangeTracker.Entries( ) .Where( e => e.Entity == version ) @@ -70,7 +70,7 @@ public async Task CreateVersionAsync( } if (version is null) { - throw new InvalidOperationException( $"Failed to create version for task {task.Id} after {maxRetries} retries." ); + throw new InvalidOperationException( $"Failed to create version for task {task.Id} after {MaxRetries} retries." ); } task.CurrentVersionId = version.Id; diff --git a/src/Werkr.Core/Triggers/TriggerVersionService.cs b/src/Werkr.Core/Triggers/TriggerVersionService.cs index 145ad64..3376993 100644 --- a/src/Werkr.Core/Triggers/TriggerVersionService.cs +++ b/src/Werkr.Core/Triggers/TriggerVersionService.cs @@ -33,10 +33,10 @@ public async Task CreateVersionAsync( ) { TriggerDefinitionSnapshot snapshot = TriggerDefinitionSnapshot.FromTrigger( trigger ); - const int maxRetries = 3; + const int MaxRetries = 3; TriggerVersion? version = null; - for (int attempt = 0; attempt < maxRetries; attempt++) { + for (int attempt = 0; attempt < MaxRetries; attempt++) { int maxVersion = await dbContext.TriggerVersions .Where( v => v.TriggerId == trigger.Id ) .MaxAsync( v => (int?)v.VersionNumber, ct ) ?? 0; @@ -53,7 +53,7 @@ public async Task CreateVersionAsync( try { _ = await dbContext.SaveChangesAsync( ct ); break; - } catch (DbUpdateException ex) when (attempt < maxRetries - 1 && DbExceptionHelper.IsUniqueConstraintViolation( ex )) { + } catch (DbUpdateException ex) when (attempt < MaxRetries - 1 && DbExceptionHelper.IsUniqueConstraintViolation( ex )) { dbContext.ChangeTracker.Entries( ) .Where( e => e.Entity == version ) .ToList( ) @@ -64,7 +64,7 @@ public async Task CreateVersionAsync( } if (version is null) { - throw new InvalidOperationException( $"Failed to create version for trigger {trigger.Id} after {maxRetries} retries." ); + throw new InvalidOperationException( $"Failed to create version for trigger {trigger.Id} after {MaxRetries} retries." ); } trigger.CurrentVersionId = version.Id; diff --git a/src/Werkr.Core/Workflows/WorkflowVersionService.cs b/src/Werkr.Core/Workflows/WorkflowVersionService.cs index b282294..eb194ac 100644 --- a/src/Werkr.Core/Workflows/WorkflowVersionService.cs +++ b/src/Werkr.Core/Workflows/WorkflowVersionService.cs @@ -38,10 +38,10 @@ public async Task CreateVersionAsync( ) { WorkflowDefinitionSnapshot snapshot = WorkflowDefinitionSnapshot.FromWorkflow( workflow ); - const int maxRetries = 3; + const int MaxRetries = 3; WorkflowVersion? version = null; - for (int attempt = 0; attempt < maxRetries; attempt++) { + for (int attempt = 0; attempt < MaxRetries; attempt++) { int maxVersion = await dbContext.Set( ) .Where( v => v.WorkflowId == workflow.Id ) .MaxAsync( v => (int?)v.VersionNumber, ct ) ?? 0; @@ -58,7 +58,7 @@ public async Task CreateVersionAsync( try { _ = await dbContext.SaveChangesAsync( ct ); break; - } catch (DbUpdateException ex) when (attempt < maxRetries - 1 && DbExceptionHelper.IsUniqueConstraintViolation( ex )) { + } catch (DbUpdateException ex) when (attempt < MaxRetries - 1 && DbExceptionHelper.IsUniqueConstraintViolation( ex )) { dbContext.ChangeTracker.Entries( ) .Where( e => e.Entity == version ) .ToList( ) @@ -69,7 +69,7 @@ public async Task CreateVersionAsync( } if (version is null) { - throw new InvalidOperationException( $"Failed to create version for workflow {workflow.Id} after {maxRetries} retries." ); + throw new InvalidOperationException( $"Failed to create version for workflow {workflow.Id} after {MaxRetries} retries." ); } workflow.CurrentVersionId = version.Id; diff --git a/src/Werkr.Core/packages.lock.json b/src/Werkr.Core/packages.lock.json index 279b256..f43f147 100644 --- a/src/Werkr.Core/packages.lock.json +++ b/src/Werkr.Core/packages.lock.json @@ -252,15 +252,15 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "gSxKLWRZzBpIsEoeUPkxfywNCCvRvl7hkq146XHPk5vOQc9izSf1I+uL1vh4y2U19QPxd9Z8K/8AdWyxYz2lSg==" + "resolved": "8.17.0", + "contentHash": "6NrxQGcZg6IunkN8K2F0UVMavNpfCjbjjjON7PYcL8FwI8aULKUreiHsRX/yaA8j3XsTJnQKUYpoQk5gBjULZw==" }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "MTzXmETkNQPACR7/XCXM1OGM6oU9RkyibqeJRtO9Ndew2LnGjMf9Atqj2VSf4XC27X0FQycUAlzxxEgQMWn2xQ==", + "resolved": "8.17.0", + "contentHash": "w1vjfri0BWqW7RkSZY3ZsqekNfIJJg5BQSFs2j+a+pCXOVrkezmJcn74pT3djwjXJh71577C6wJQgNc2UPz30w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.16.0" + "Microsoft.IdentityModel.Abstractions": "8.17.0" } }, "MimeKit": { @@ -323,7 +323,7 @@ "Google.Protobuf": "[3.34.1, )", "Microsoft.AspNetCore.Authorization": "[10.0.5, )", "Microsoft.Extensions.Configuration.Json": "[10.0.5, )", - "Microsoft.IdentityModel.Tokens": "[8.16.0, )", + "Microsoft.IdentityModel.Tokens": "[8.17.0, )", "TimeZoneNames": "[7.0.0, )", "Werkr.Common.Configuration": "[1.0.0, )" } @@ -438,12 +438,12 @@ }, "Microsoft.IdentityModel.Tokens": { "type": "CentralTransitive", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "rtViGJcGsN7WcfUNErwNeQgjuU5cJNl6FDQsfi9TncwO+Epzn0FTfBsg3YuFW1Q0Ch/KPxaVdjLw3/+5Z5ceFQ==", + "requested": "[8.17.0, )", + "resolved": "8.17.0", + "contentHash": "teaW35URIV2x78Tzk+dVJiC4M62/9mQoSEoDjDGoEZmcQa3H2rE+XQpm9Tmdo9KK1Lcrnve4zoyLavl69kCFGg==", "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.IdentityModel.Logging": "8.16.0" + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.17.0" } }, "Npgsql.EntityFrameworkCore.PostgreSQL": { diff --git a/src/Werkr.Data.Identity/Migrations/Postgres/20260322224339_Initial.Designer.cs b/src/Werkr.Data.Identity/Migrations/Postgres/20260329063536_Initial.Designer.cs similarity index 99% rename from src/Werkr.Data.Identity/Migrations/Postgres/20260322224339_Initial.Designer.cs rename to src/Werkr.Data.Identity/Migrations/Postgres/20260329063536_Initial.Designer.cs index add8d64..219a85b 100644 --- a/src/Werkr.Data.Identity/Migrations/Postgres/20260322224339_Initial.Designer.cs +++ b/src/Werkr.Data.Identity/Migrations/Postgres/20260329063536_Initial.Designer.cs @@ -12,7 +12,7 @@ namespace Werkr.Data.Identity.Migrations.Postgres { [DbContext(typeof(PostgresWerkrIdentityDbContext))] - [Migration("20260322224339_Initial")] + [Migration("20260329063536_Initial")] partial class Initial { /// diff --git a/src/Werkr.Data.Identity/Migrations/Postgres/20260322224339_Initial.cs b/src/Werkr.Data.Identity/Migrations/Postgres/20260329063536_Initial.cs similarity index 99% rename from src/Werkr.Data.Identity/Migrations/Postgres/20260322224339_Initial.cs rename to src/Werkr.Data.Identity/Migrations/Postgres/20260329063536_Initial.cs index 9d43855..284cf31 100644 --- a/src/Werkr.Data.Identity/Migrations/Postgres/20260322224339_Initial.cs +++ b/src/Werkr.Data.Identity/Migrations/Postgres/20260329063536_Initial.cs @@ -1,10 +1,10 @@ +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable -namespace Werkr.Data.Identity.Migrations.Postgres; - +namespace Werkr.Data.Identity.Migrations.Postgres; /// public partial class Initial : Migration { /// diff --git a/src/Werkr.Data.Identity/Migrations/Sqlite/20260322224400_Initial.Designer.cs b/src/Werkr.Data.Identity/Migrations/Sqlite/20260329063555_Initial.Designer.cs similarity index 99% rename from src/Werkr.Data.Identity/Migrations/Sqlite/20260322224400_Initial.Designer.cs rename to src/Werkr.Data.Identity/Migrations/Sqlite/20260329063555_Initial.Designer.cs index acd2d43..7c776b0 100644 --- a/src/Werkr.Data.Identity/Migrations/Sqlite/20260322224400_Initial.Designer.cs +++ b/src/Werkr.Data.Identity/Migrations/Sqlite/20260329063555_Initial.Designer.cs @@ -11,7 +11,7 @@ namespace Werkr.Data.Identity.Migrations.Sqlite { [DbContext(typeof(SqliteWerkrIdentityDbContext))] - [Migration("20260322224400_Initial")] + [Migration("20260329063555_Initial")] partial class Initial { /// diff --git a/src/Werkr.Data.Identity/Migrations/Sqlite/20260322224400_Initial.cs b/src/Werkr.Data.Identity/Migrations/Sqlite/20260329063555_Initial.cs similarity index 99% rename from src/Werkr.Data.Identity/Migrations/Sqlite/20260322224400_Initial.cs rename to src/Werkr.Data.Identity/Migrations/Sqlite/20260329063555_Initial.cs index a40b183..a069ed2 100644 --- a/src/Werkr.Data.Identity/Migrations/Sqlite/20260322224400_Initial.cs +++ b/src/Werkr.Data.Identity/Migrations/Sqlite/20260329063555_Initial.cs @@ -1,9 +1,9 @@ +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace Werkr.Data.Identity.Migrations.Sqlite; - +namespace Werkr.Data.Identity.Migrations.Sqlite; /// public partial class Initial : Migration { /// diff --git a/src/Werkr.Data.Identity/packages.lock.json b/src/Werkr.Data.Identity/packages.lock.json index ef610b7..7d7a07b 100644 --- a/src/Werkr.Data.Identity/packages.lock.json +++ b/src/Werkr.Data.Identity/packages.lock.json @@ -148,15 +148,15 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "gSxKLWRZzBpIsEoeUPkxfywNCCvRvl7hkq146XHPk5vOQc9izSf1I+uL1vh4y2U19QPxd9Z8K/8AdWyxYz2lSg==" + "resolved": "8.17.0", + "contentHash": "6NrxQGcZg6IunkN8K2F0UVMavNpfCjbjjjON7PYcL8FwI8aULKUreiHsRX/yaA8j3XsTJnQKUYpoQk5gBjULZw==" }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "MTzXmETkNQPACR7/XCXM1OGM6oU9RkyibqeJRtO9Ndew2LnGjMf9Atqj2VSf4XC27X0FQycUAlzxxEgQMWn2xQ==", + "resolved": "8.17.0", + "contentHash": "w1vjfri0BWqW7RkSZY3ZsqekNfIJJg5BQSFs2j+a+pCXOVrkezmJcn74pT3djwjXJh71577C6wJQgNc2UPz30w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.16.0" + "Microsoft.IdentityModel.Abstractions": "8.17.0" } }, "Microsoft.VisualStudio.SolutionPersistence": { @@ -271,7 +271,7 @@ "type": "Project", "dependencies": { "Google.Protobuf": "[3.34.1, )", - "Microsoft.IdentityModel.Tokens": "[8.16.0, )", + "Microsoft.IdentityModel.Tokens": "[8.17.0, )", "TimeZoneNames": "[7.0.0, )", "Werkr.Common.Configuration": "[1.0.0, )" } @@ -338,11 +338,11 @@ }, "Microsoft.IdentityModel.Tokens": { "type": "CentralTransitive", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "rtViGJcGsN7WcfUNErwNeQgjuU5cJNl6FDQsfi9TncwO+Epzn0FTfBsg3YuFW1Q0Ch/KPxaVdjLw3/+5Z5ceFQ==", + "requested": "[8.17.0, )", + "resolved": "8.17.0", + "contentHash": "teaW35URIV2x78Tzk+dVJiC4M62/9mQoSEoDjDGoEZmcQa3H2rE+XQpm9Tmdo9KK1Lcrnve4zoyLavl69kCFGg==", "dependencies": { - "Microsoft.IdentityModel.Logging": "8.16.0" + "Microsoft.IdentityModel.Logging": "8.17.0" } }, "Npgsql.EntityFrameworkCore.PostgreSQL": { diff --git a/src/Werkr.Data/Migrations/Postgres/20260323003632_Initial.cs b/src/Werkr.Data/Migrations/Postgres/20260323003632_Initial.cs deleted file mode 100644 index 9a145b6..0000000 --- a/src/Werkr.Data/Migrations/Postgres/20260323003632_Initial.cs +++ /dev/null @@ -1,2033 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace Werkr.Data.Migrations.Postgres -{ - /// - public partial class Initial : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.EnsureSchema( - name: "werkr"); - - migrationBuilder.CreateTable( - name: "audit_events", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityAlwaysColumn), - event_type_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - event_category = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), - source_module = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), - actor_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: true), - actor_type = table.Column(type: "text", nullable: false), - entity_type = table.Column(type: "character varying(64)", maxLength: 64, nullable: true), - entity_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: true), - action_performed = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), - details = table.Column(type: "character varying(8192)", maxLength: 8192, nullable: false), - timestamp_utc = table.Column(type: "timestamp with time zone", nullable: false), - correlation_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_audit_events", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "configuration_entries", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - key = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - value = table.Column(type: "text", nullable: false), - value_type = table.Column(type: "character varying(32)", maxLength: 32, nullable: false), - category = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), - description = table.Column(type: "character varying(500)", maxLength: 500, nullable: true), - scope_level = table.Column(type: "integer", nullable: false), - scope_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: true), - sync_version = table.Column(type: "bigint", nullable: false), - validation_rules = table.Column(type: "text", nullable: true), - default_value = table.Column(type: "text", nullable: false), - created_utc = table.Column(type: "timestamp with time zone", nullable: false), - modified_utc = table.Column(type: "timestamp with time zone", nullable: false), - modified_by_user_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_configuration_entries", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "credentials", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - name = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - type = table.Column(type: "text", nullable: false), - encrypted_value = table.Column(type: "text", nullable: false), - description = table.Column(type: "character varying(500)", maxLength: 500, nullable: true), - created_utc = table.Column(type: "timestamp with time zone", nullable: false), - modified_utc = table.Column(type: "timestamp with time zone", nullable: false), - created_by_user_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - modified_by_user_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_credentials", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "holiday_calendars", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "uuid", nullable: false), - name = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - description = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false), - is_system_calendar = table.Column(type: "boolean", nullable: false), - created_utc = table.Column(type: "timestamp with time zone", nullable: false), - updated_utc = table.Column(type: "timestamp with time zone", nullable: false), - working_days = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_holiday_calendars", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "notification_channels", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - name = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - channel_type = table.Column(type: "character varying(32)", maxLength: 32, nullable: false), - configuration = table.Column(type: "text", nullable: false), - is_enabled = table.Column(type: "boolean", nullable: false), - created_utc = table.Column(type: "timestamp with time zone", nullable: false), - modified_utc = table.Column(type: "timestamp with time zone", nullable: false), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_notification_channels", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "notification_templates", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - event_type_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - channel_type = table.Column(type: "character varying(32)", maxLength: 32, nullable: false), - subject = table.Column(type: "character varying(500)", maxLength: 500, nullable: true), - body = table.Column(type: "character varying(8000)", maxLength: 8000, nullable: false), - is_default = table.Column(type: "boolean", nullable: false), - created_utc = table.Column(type: "timestamp with time zone", nullable: false), - modified_utc = table.Column(type: "timestamp with time zone", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_notification_templates", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "registered_connections", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "uuid", nullable: false), - connection_name = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - remote_url = table.Column(type: "character varying(2048)", maxLength: 2048, nullable: false), - local_public_key = table.Column(type: "text", nullable: false), - local_private_key = table.Column(type: "text", nullable: false), - remote_public_key = table.Column(type: "text", nullable: false), - outbound_api_key = table.Column(type: "character varying(512)", maxLength: 512, nullable: false), - inbound_api_key_hash = table.Column(type: "character varying(512)", maxLength: 512, nullable: false), - shared_key = table.Column(type: "text", nullable: false), - previous_shared_key = table.Column(type: "text", nullable: true), - active_key_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: true), - previous_key_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: true), - key_rotated_at_utc = table.Column(type: "timestamp with time zone", nullable: true), - is_server = table.Column(type: "boolean", nullable: false), - status = table.Column(type: "text", nullable: false), - last_seen = table.Column(type: "timestamp with time zone", nullable: true), - tags = table.Column(type: "text", nullable: false), - allowed_paths = table.Column(type: "text", nullable: false), - enforce_allowlist = table.Column(type: "boolean", nullable: false), - agent_version = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - pending_shared_key = table.Column(type: "text", nullable: true), - pending_key_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: true), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_registered_connections", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "registration_bundles", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "uuid", nullable: false), - connection_name = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - server_public_key = table.Column(type: "text", nullable: false), - server_private_key = table.Column(type: "text", nullable: false), - bundle_id = table.Column(type: "text", nullable: false), - status = table.Column(type: "text", nullable: false), - expires_at = table.Column(type: "timestamp with time zone", nullable: false), - key_size = table.Column(type: "integer", nullable: false), - tags = table.Column(type: "text[]", nullable: false), - allowed_paths = table.Column(type: "text", nullable: false), - registration_key = table.Column(type: "text", nullable: true), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_registration_bundles", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "retention_policies", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - entity_type = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), - retention_days = table.Column(type: "integer", nullable: false), - is_enabled = table.Column(type: "boolean", nullable: false), - modified_utc = table.Column(type: "timestamp with time zone", nullable: false), - modified_by_user_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_retention_policies", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "saved_filters", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - owner_id = table.Column(type: "character varying(450)", maxLength: 450, nullable: false), - page_key = table.Column(type: "character varying(50)", maxLength: 50, nullable: false), - name = table.Column(type: "character varying(200)", maxLength: 200, nullable: false), - criteria_json = table.Column(type: "character varying(4096)", maxLength: 4096, nullable: false), - is_shared = table.Column(type: "boolean", nullable: false), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_saved_filters", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "schedules", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "uuid", nullable: false), - name = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - stop_task_after_minutes = table.Column(type: "bigint", nullable: false), - catch_up_enabled = table.Column(type: "boolean", nullable: false), - shift_mode = table.Column(type: "integer", nullable: false), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_schedules", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "user_notification_preferences", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - user_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - event_category_id = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), - channel_type = table.Column(type: "character varying(32)", maxLength: 32, nullable: false), - is_enabled = table.Column(type: "boolean", nullable: false), - quiet_hours_start = table.Column(type: "time without time zone", nullable: true), - quiet_hours_end = table.Column(type: "time without time zone", nullable: true), - quiet_hours_timezone = table.Column(type: "character varying(64)", maxLength: 64, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_user_notification_preferences", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "user_notifications", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - user_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - event_type_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - event_category_id = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), - title = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - body = table.Column(type: "character varying(2000)", maxLength: 2000, nullable: false), - is_read = table.Column(type: "boolean", nullable: false), - created_utc = table.Column(type: "timestamp with time zone", nullable: false), - read_utc = table.Column(type: "timestamp with time zone", nullable: true), - link = table.Column(type: "character varying(512)", maxLength: 512, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_user_notifications", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "user_preferences", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - user_id = table.Column(type: "character varying(450)", maxLength: 450, nullable: false), - key = table.Column(type: "character varying(100)", maxLength: 100, nullable: false), - value = table.Column(type: "character varying(500)", maxLength: 500, nullable: false), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_user_preferences", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "configuration_change_logs", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - configuration_entry_id = table.Column(type: "bigint", nullable: false), - key = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - previous_value = table.Column(type: "text", nullable: true), - new_value = table.Column(type: "text", nullable: false), - changed_by_user_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - changed_utc = table.Column(type: "timestamp with time zone", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_configuration_change_logs", x => x.id); - table.ForeignKey( - name: "fk_configuration_change_logs_configuration_entries_configurati", - column: x => x.configuration_entry_id, - principalSchema: "werkr", - principalTable: "configuration_entries", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "holiday_rules", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityAlwaysColumn), - holiday_calendar_id = table.Column(type: "uuid", nullable: false), - name = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - rule_type = table.Column(type: "text", nullable: false), - month = table.Column(type: "integer", nullable: true), - day = table.Column(type: "integer", nullable: true), - day_of_week = table.Column(type: "integer", nullable: true), - week_number = table.Column(type: "integer", nullable: true), - window_start = table.Column(type: "time without time zone", nullable: true), - window_end = table.Column(type: "time without time zone", nullable: true), - window_time_zone_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: true), - observance_rule = table.Column(type: "text", nullable: false), - year_start = table.Column(type: "integer", nullable: true), - year_end = table.Column(type: "integer", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_holiday_rules", x => x.id); - table.ForeignKey( - name: "fk_holiday_rules_holiday_calendars_holiday_calendar_id", - column: x => x.holiday_calendar_id, - principalSchema: "werkr", - principalTable: "holiday_calendars", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "notification_deliveries", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - channel_id = table.Column(type: "bigint", nullable: false), - event_type_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - recipient_id = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - status = table.Column(type: "integer", nullable: false), - attempt_count = table.Column(type: "integer", nullable: false), - max_attempts = table.Column(type: "integer", nullable: false), - last_attempt_utc = table.Column(type: "timestamp with time zone", nullable: true), - next_retry_utc = table.Column(type: "timestamp with time zone", nullable: true), - error_message = table.Column(type: "character varying(2000)", maxLength: 2000, nullable: true), - payload_json = table.Column(type: "text", nullable: false), - created_utc = table.Column(type: "timestamp with time zone", nullable: false), - completed_utc = table.Column(type: "timestamp with time zone", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_notification_deliveries", x => x.id); - table.ForeignKey( - name: "fk_notification_deliveries_notification_channels_channel_id", - column: x => x.channel_id, - principalSchema: "werkr", - principalTable: "notification_channels", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "credential_agent_scopes", - schema: "werkr", - columns: table => new - { - credential_id = table.Column(type: "bigint", nullable: false), - agent_connection_id = table.Column(type: "uuid", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_credential_agent_scopes", x => new { x.credential_id, x.agent_connection_id }); - table.ForeignKey( - name: "fk_credential_agent_scopes_credentials_credential_id", - column: x => x.credential_id, - principalSchema: "werkr", - principalTable: "credentials", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_credential_agent_scopes_registered_connections_agent_connec", - column: x => x.agent_connection_id, - principalSchema: "werkr", - principalTable: "registered_connections", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "pending_agent_notifications", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - connection_id = table.Column(type: "uuid", nullable: false), - channel = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), - payload = table.Column(type: "character varying(2000)", maxLength: 2000, nullable: true), - created_utc = table.Column(type: "timestamp with time zone", nullable: false), - expires_utc = table.Column(type: "timestamp with time zone", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_pending_agent_notifications", x => x.id); - table.ForeignKey( - name: "fk_pending_agent_notifications_registered_connections_connecti", - column: x => x.connection_id, - principalSchema: "werkr", - principalTable: "registered_connections", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "daily_recurrence", - schema: "werkr", - columns: table => new - { - schedule_id = table.Column(type: "uuid", nullable: false), - day_interval = table.Column(type: "integer", nullable: false), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_daily_recurrence", x => x.schedule_id); - table.ForeignKey( - name: "fk_daily_recurrence_schedules_schedule_id", - column: x => x.schedule_id, - principalSchema: "werkr", - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "monthly_recurrence", - schema: "werkr", - columns: table => new - { - schedule_id = table.Column(type: "uuid", nullable: false), - day_numbers = table.Column(type: "text", nullable: true), - months_of_year = table.Column(type: "integer", nullable: false), - week_number = table.Column(type: "integer", nullable: true), - days_of_week = table.Column(type: "integer", nullable: true), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_monthly_recurrence", x => x.schedule_id); - table.ForeignKey( - name: "fk_monthly_recurrence_schedules_schedule_id", - column: x => x.schedule_id, - principalSchema: "werkr", - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "schedule_expiration", - schema: "werkr", - columns: table => new - { - schedule_id = table.Column(type: "uuid", nullable: false), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false), - date = table.Column(type: "date", nullable: false), - time = table.Column(type: "time without time zone", nullable: false), - time_zone = table.Column(type: "text", nullable: false), - is_fixed_offset = table.Column(type: "boolean", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_schedule_expiration", x => x.schedule_id); - table.ForeignKey( - name: "fk_schedule_expiration_schedules_schedule_id", - column: x => x.schedule_id, - principalSchema: "werkr", - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "schedule_holiday_calendars", - schema: "werkr", - columns: table => new - { - schedule_id = table.Column(type: "uuid", nullable: false), - holiday_calendar_id = table.Column(type: "uuid", nullable: false), - mode = table.Column(type: "text", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_schedule_holiday_calendars", x => new { x.schedule_id, x.holiday_calendar_id }); - table.ForeignKey( - name: "fk_schedule_holiday_calendars_holiday_calendars_holiday_calend", - column: x => x.holiday_calendar_id, - principalSchema: "werkr", - principalTable: "holiday_calendars", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_schedule_holiday_calendars_schedules_schedule_id", - column: x => x.schedule_id, - principalSchema: "werkr", - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "schedule_repeat_options", - schema: "werkr", - columns: table => new - { - schedule_id = table.Column(type: "uuid", nullable: false), - repeat_interval_minutes = table.Column(type: "integer", nullable: false), - repeat_duration_minutes = table.Column(type: "integer", nullable: false), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_schedule_repeat_options", x => x.schedule_id); - table.ForeignKey( - name: "fk_schedule_repeat_options_schedules_schedule_id", - column: x => x.schedule_id, - principalSchema: "werkr", - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "schedule_start_datetimeinfo", - schema: "werkr", - columns: table => new - { - schedule_id = table.Column(type: "uuid", nullable: false), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false), - date = table.Column(type: "date", nullable: false), - time = table.Column(type: "time without time zone", nullable: false), - time_zone = table.Column(type: "text", nullable: false), - is_fixed_offset = table.Column(type: "boolean", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_schedule_start_datetimeinfo", x => x.schedule_id); - table.ForeignKey( - name: "fk_schedule_start_datetimeinfo_schedules_schedule_id", - column: x => x.schedule_id, - principalSchema: "werkr", - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "weekly_recurrence", - schema: "werkr", - columns: table => new - { - schedule_id = table.Column(type: "uuid", nullable: false), - week_interval = table.Column(type: "integer", nullable: false), - days_of_week = table.Column(type: "integer", nullable: false), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_weekly_recurrence", x => x.schedule_id); - table.ForeignKey( - name: "fk_weekly_recurrence_schedules_schedule_id", - column: x => x.schedule_id, - principalSchema: "werkr", - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "holiday_dates", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityAlwaysColumn), - holiday_calendar_id = table.Column(type: "uuid", nullable: false), - holiday_rule_id = table.Column(type: "bigint", nullable: true), - date = table.Column(type: "date", nullable: false), - name = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - year = table.Column(type: "integer", nullable: false), - window_start = table.Column(type: "time without time zone", nullable: true), - window_end = table.Column(type: "time without time zone", nullable: true), - window_time_zone_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_holiday_dates", x => x.id); - table.ForeignKey( - name: "fk_holiday_dates_holiday_calendars_holiday_calendar_id", - column: x => x.holiday_calendar_id, - principalSchema: "werkr", - principalTable: "holiday_calendars", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_holiday_dates_holiday_rules_holiday_rule_id", - column: x => x.holiday_rule_id, - principalSchema: "werkr", - principalTable: "holiday_rules", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - }); - - migrationBuilder.CreateTable( - name: "file_monitor_triggers", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - workflow_id = table.Column(type: "bigint", nullable: false), - watch_directory = table.Column(type: "character varying(500)", maxLength: 500, nullable: false), - file_pattern = table.Column(type: "character varying(200)", maxLength: 200, nullable: false), - event_types = table.Column(type: "text", nullable: false), - debounce_ms = table.Column(type: "integer", nullable: false), - enabled = table.Column(type: "boolean", nullable: false), - target_tags = table.Column(type: "text", nullable: true), - current_version_id = table.Column(type: "bigint", nullable: true), - version_binding_mode = table.Column(type: "text", nullable: false), - pinned_workflow_version_id = table.Column(type: "bigint", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_file_monitor_triggers", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "trigger_versions", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - trigger_id = table.Column(type: "bigint", nullable: false), - version_number = table.Column(type: "integer", nullable: false), - definition = table.Column(type: "text", nullable: false), - created_by_user_id = table.Column(type: "character varying(450)", maxLength: 450, nullable: true), - change_description = table.Column(type: "character varying(500)", maxLength: 500, nullable: true), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_trigger_versions", x => x.id); - table.ForeignKey( - name: "fk_trigger_versions_file_monitor_triggers_trigger_id", - column: x => x.trigger_id, - principalSchema: "werkr", - principalTable: "file_monitor_triggers", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "jobs", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "uuid", nullable: false), - task_id = table.Column(type: "bigint", nullable: false), - task_snapshot = table.Column(type: "character varying(8000)", maxLength: 8000, nullable: false), - runtime_seconds = table.Column(type: "double precision", nullable: false), - start_time = table.Column(type: "timestamp with time zone", nullable: false), - end_time = table.Column(type: "timestamp with time zone", nullable: true), - success = table.Column(type: "boolean", nullable: false), - agent_connection_id = table.Column(type: "uuid", nullable: true), - exit_code = table.Column(type: "integer", nullable: true), - error_category = table.Column(type: "text", nullable: false), - output = table.Column(type: "character varying(2000)", maxLength: 2000, nullable: true), - output_path = table.Column(type: "character varying(512)", maxLength: 512, nullable: true), - workflow_run_id = table.Column(type: "uuid", nullable: true), - schedule_id = table.Column(type: "uuid", nullable: true), - step_id = table.Column(type: "bigint", nullable: true), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_jobs", x => x.id); - table.ForeignKey( - name: "fk_jobs_registered_connections_agent_connection_id", - column: x => x.agent_connection_id, - principalSchema: "werkr", - principalTable: "registered_connections", - principalColumn: "id"); - table.ForeignKey( - name: "fk_jobs_schedules_schedule_id", - column: x => x.schedule_id, - principalSchema: "werkr", - principalTable: "schedules", - principalColumn: "id"); - }); - - migrationBuilder.CreateTable( - name: "notification_subscriptions", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - subscription_type = table.Column(type: "integer", nullable: false), - workflow_id = table.Column(type: "bigint", nullable: true), - tag = table.Column(type: "character varying(128)", maxLength: 128, nullable: true), - event_category_id = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), - channel_id = table.Column(type: "bigint", nullable: false), - is_enabled = table.Column(type: "boolean", nullable: false), - created_by_user_id = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - created_utc = table.Column(type: "timestamp with time zone", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_notification_subscriptions", x => x.id); - table.ForeignKey( - name: "fk_notification_subscriptions_notification_channels_channel_id", - column: x => x.channel_id, - principalSchema: "werkr", - principalTable: "notification_channels", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "task_schedules", - schema: "werkr", - columns: table => new - { - task_id = table.Column(type: "bigint", nullable: false), - schedule_id = table.Column(type: "uuid", nullable: false), - created_at_utc = table.Column(type: "timestamp with time zone", nullable: false), - is_one_time = table.Column(type: "boolean", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_task_schedules", x => new { x.task_id, x.schedule_id }); - table.ForeignKey( - name: "fk_task_schedules_schedules_schedule_id", - column: x => x.schedule_id, - principalSchema: "werkr", - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "task_versions", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - task_id = table.Column(type: "bigint", nullable: false), - version_number = table.Column(type: "integer", nullable: false), - definition = table.Column(type: "text", nullable: false), - created_by_user_id = table.Column(type: "character varying(450)", maxLength: 450, nullable: true), - change_description = table.Column(type: "character varying(500)", maxLength: 500, nullable: true), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_task_versions", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "tasks", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - name = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - description = table.Column(type: "character varying(2000)", maxLength: 2000, nullable: false), - action_type = table.Column(type: "text", nullable: false), - workflow_id = table.Column(type: "bigint", nullable: true), - content = table.Column(type: "character varying(8000)", maxLength: 8000, nullable: false), - arguments = table.Column(type: "text", nullable: true), - target_tags = table.Column(type: "text", nullable: false), - enabled = table.Column(type: "boolean", nullable: false), - is_ephemeral = table.Column(type: "boolean", nullable: false), - timeout_minutes = table.Column(type: "bigint", nullable: true), - sync_interval_minutes = table.Column(type: "integer", nullable: false), - success_criteria = table.Column(type: "character varying(500)", maxLength: 500, nullable: true), - action_sub_type = table.Column(type: "character varying(30)", maxLength: 30, nullable: true), - action_parameters = table.Column(type: "text", nullable: true), - current_version_id = table.Column(type: "bigint", nullable: true), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_tasks", x => x.id); - table.ForeignKey( - name: "fk_tasks_task_versions_current_version_id", - column: x => x.current_version_id, - principalSchema: "werkr", - principalTable: "task_versions", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - }); - - migrationBuilder.CreateTable( - name: "workflow_run_variables", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - workflow_run_id = table.Column(type: "uuid", nullable: false), - variable_name = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - value = table.Column(type: "text", nullable: false), - version = table.Column(type: "integer", nullable: false), - produced_by_step_id = table.Column(type: "bigint", nullable: true), - produced_by_job_id = table.Column(type: "uuid", nullable: true), - source = table.Column(type: "text", nullable: false), - created = table.Column(type: "timestamp with time zone", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_run_variables", x => x.id); - table.ForeignKey( - name: "fk_workflow_run_variables_jobs_produced_by_job_id", - column: x => x.produced_by_job_id, - principalSchema: "werkr", - principalTable: "jobs", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - }); - - migrationBuilder.CreateTable( - name: "workflow_runs", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "uuid", nullable: false), - workflow_id = table.Column(type: "bigint", nullable: false), - start_time = table.Column(type: "timestamp with time zone", nullable: false), - end_time = table.Column(type: "timestamp with time zone", nullable: true), - status = table.Column(type: "text", nullable: false), - workflow_version_id = table.Column(type: "bigint", nullable: true), - workflow_name_snapshot = table.Column(type: "character varying(200)", maxLength: 200, nullable: true), - workflow_version_snapshot = table.Column(type: "integer", nullable: true), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_runs", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "workflow_schedules", - schema: "werkr", - columns: table => new - { - workflow_id = table.Column(type: "bigint", nullable: false), - schedule_id = table.Column(type: "uuid", nullable: false), - created_at_utc = table.Column(type: "timestamp with time zone", nullable: false), - is_one_time = table.Column(type: "boolean", nullable: false), - workflow_run_id = table.Column(type: "uuid", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_schedules", x => new { x.workflow_id, x.schedule_id }); - table.ForeignKey( - name: "fk_workflow_schedules_schedules_schedule_id", - column: x => x.schedule_id, - principalSchema: "werkr", - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "workflow_step_dependencies", - schema: "werkr", - columns: table => new - { - step_id = table.Column(type: "bigint", nullable: false), - depends_on_step_id = table.Column(type: "bigint", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_step_dependencies", x => new { x.step_id, x.depends_on_step_id }); - }); - - migrationBuilder.CreateTable( - name: "workflow_step_executions", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - workflow_run_id = table.Column(type: "uuid", nullable: false), - step_id = table.Column(type: "bigint", nullable: false), - attempt = table.Column(type: "integer", nullable: false), - status = table.Column(type: "text", nullable: false), - start_time = table.Column(type: "timestamp with time zone", nullable: true), - end_time = table.Column(type: "timestamp with time zone", nullable: true), - job_id = table.Column(type: "uuid", nullable: true), - error_message = table.Column(type: "character varying(4000)", maxLength: 4000, nullable: true), - skip_reason = table.Column(type: "character varying(2000)", maxLength: 2000, nullable: true), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_step_executions", x => x.id); - table.ForeignKey( - name: "fk_workflow_step_executions_jobs_job_id", - column: x => x.job_id, - principalSchema: "werkr", - principalTable: "jobs", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - table.ForeignKey( - name: "fk_workflow_step_executions_workflow_runs_workflow_run_id", - column: x => x.workflow_run_id, - principalSchema: "werkr", - principalTable: "workflow_runs", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "workflow_steps", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - workflow_id = table.Column(type: "bigint", nullable: false), - task_id = table.Column(type: "bigint", nullable: true), - order = table.Column(type: "integer", nullable: false), - control_statement = table.Column(type: "text", nullable: false), - condition_expression = table.Column(type: "character varying(2000)", maxLength: 2000, nullable: true), - max_iterations = table.Column(type: "integer", nullable: false), - agent_connection_id_override = table.Column(type: "uuid", nullable: true), - dependency_mode = table.Column(type: "text", nullable: false), - input_variable_name = table.Column(type: "character varying(128)", maxLength: 128, nullable: true), - output_variable_name = table.Column(type: "character varying(128)", maxLength: 128, nullable: true), - is_composite = table.Column(type: "boolean", nullable: false), - composite_type = table.Column(type: "text", nullable: false), - child_workflow_id = table.Column(type: "bigint", nullable: true), - iteration_variable_name = table.Column(type: "character varying(128)", maxLength: 128, nullable: true), - collection_variable_name = table.Column(type: "character varying(128)", maxLength: 128, nullable: true), - task_version_id = table.Column(type: "bigint", nullable: true), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_steps", x => x.id); - table.ForeignKey( - name: "fk_workflow_steps_registered_connections_agent_connection_id_o", - column: x => x.agent_connection_id_override, - principalSchema: "werkr", - principalTable: "registered_connections", - principalColumn: "id"); - table.ForeignKey( - name: "fk_workflow_steps_task_versions_task_version_id", - column: x => x.task_version_id, - principalSchema: "werkr", - principalTable: "task_versions", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - table.ForeignKey( - name: "fk_workflow_steps_tasks_task_id", - column: x => x.task_id, - principalSchema: "werkr", - principalTable: "tasks", - principalColumn: "id"); - }); - - migrationBuilder.CreateTable( - name: "workflow_variables", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - workflow_id = table.Column(type: "bigint", nullable: false), - name = table.Column(type: "character varying(128)", maxLength: 128, nullable: false), - description = table.Column(type: "character varying(500)", maxLength: 500, nullable: true), - default_value = table.Column(type: "text", nullable: true), - data_type = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - is_required = table.Column(type: "boolean", nullable: false), - log_redaction = table.Column(type: "boolean", nullable: false), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_variables", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "workflow_versions", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - workflow_id = table.Column(type: "bigint", nullable: false), - version_number = table.Column(type: "integer", nullable: false), - definition = table.Column(type: "text", nullable: false), - created_by_user_id = table.Column(type: "character varying(450)", maxLength: 450, nullable: true), - change_description = table.Column(type: "character varying(500)", maxLength: 500, nullable: true), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_versions", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "workflows", - schema: "werkr", - columns: table => new - { - id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - name = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - description = table.Column(type: "character varying(2000)", maxLength: 2000, nullable: false), - enabled = table.Column(type: "boolean", nullable: false), - target_tags = table.Column(type: "text", nullable: true), - annotations = table.Column(type: "text", nullable: true), - parent_step_id = table.Column(type: "bigint", nullable: true), - is_child_workflow = table.Column(type: "boolean", nullable: false), - current_version_id = table.Column(type: "bigint", nullable: true), - created = table.Column(type: "timestamp with time zone", nullable: false), - last_updated = table.Column(type: "timestamp with time zone", nullable: false), - version = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflows", x => x.id); - table.ForeignKey( - name: "fk_workflows_workflow_steps_parent_step_id", - column: x => x.parent_step_id, - principalSchema: "werkr", - principalTable: "workflow_steps", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - table.ForeignKey( - name: "fk_workflows_workflow_versions_current_version_id", - column: x => x.current_version_id, - principalSchema: "werkr", - principalTable: "workflow_versions", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - }); - - migrationBuilder.CreateIndex( - name: "ix_audit_events_actor_id", - schema: "werkr", - table: "audit_events", - column: "actor_id"); - - migrationBuilder.CreateIndex( - name: "ix_audit_events_entity_type_entity_id", - schema: "werkr", - table: "audit_events", - columns: new[] { "entity_type", "entity_id" }); - - migrationBuilder.CreateIndex( - name: "ix_audit_events_event_category", - schema: "werkr", - table: "audit_events", - column: "event_category"); - - migrationBuilder.CreateIndex( - name: "ix_audit_events_event_type_id", - schema: "werkr", - table: "audit_events", - column: "event_type_id"); - - migrationBuilder.CreateIndex( - name: "ix_audit_events_timestamp_utc", - schema: "werkr", - table: "audit_events", - column: "timestamp_utc", - descending: new bool[0]); - - migrationBuilder.CreateIndex( - name: "ix_configuration_change_logs_configuration_entry_id", - schema: "werkr", - table: "configuration_change_logs", - column: "configuration_entry_id"); - - migrationBuilder.CreateIndex( - name: "ix_configuration_entries_category", - schema: "werkr", - table: "configuration_entries", - column: "category"); - - migrationBuilder.CreateIndex( - name: "ix_configuration_entries_key_scope_level_scope_id", - schema: "werkr", - table: "configuration_entries", - columns: new[] { "key", "scope_level", "scope_id" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_configuration_entries_scope_id", - schema: "werkr", - table: "configuration_entries", - column: "scope_id"); - - migrationBuilder.CreateIndex( - name: "ix_configuration_entries_sync_version", - schema: "werkr", - table: "configuration_entries", - column: "sync_version"); - - migrationBuilder.CreateIndex( - name: "ix_credential_agent_scopes_agent_connection_id", - schema: "werkr", - table: "credential_agent_scopes", - column: "agent_connection_id"); - - migrationBuilder.CreateIndex( - name: "ix_credentials_name", - schema: "werkr", - table: "credentials", - column: "name", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_file_monitor_triggers_current_version_id", - schema: "werkr", - table: "file_monitor_triggers", - column: "current_version_id"); - - migrationBuilder.CreateIndex( - name: "ix_file_monitor_triggers_pinned_workflow_version_id", - schema: "werkr", - table: "file_monitor_triggers", - column: "pinned_workflow_version_id"); - - migrationBuilder.CreateIndex( - name: "ix_file_monitor_triggers_workflow_id", - schema: "werkr", - table: "file_monitor_triggers", - column: "workflow_id"); - - migrationBuilder.CreateIndex( - name: "ix_holiday_calendars_name", - schema: "werkr", - table: "holiday_calendars", - column: "name", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_holiday_dates_holiday_calendar_id_date", - schema: "werkr", - table: "holiday_dates", - columns: new[] { "holiday_calendar_id", "date" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_holiday_dates_holiday_rule_id", - schema: "werkr", - table: "holiday_dates", - column: "holiday_rule_id"); - - migrationBuilder.CreateIndex( - name: "ix_holiday_rules_holiday_calendar_id", - schema: "werkr", - table: "holiday_rules", - column: "holiday_calendar_id"); - - migrationBuilder.CreateIndex( - name: "ix_jobs_agent_connection_id", - schema: "werkr", - table: "jobs", - column: "agent_connection_id"); - - migrationBuilder.CreateIndex( - name: "ix_jobs_schedule_id", - schema: "werkr", - table: "jobs", - column: "schedule_id"); - - migrationBuilder.CreateIndex( - name: "ix_jobs_step_id", - schema: "werkr", - table: "jobs", - column: "step_id"); - - migrationBuilder.CreateIndex( - name: "ix_jobs_task_id", - schema: "werkr", - table: "jobs", - column: "task_id"); - - migrationBuilder.CreateIndex( - name: "IX_jobs_WorkflowRunId_StepId", - schema: "werkr", - table: "jobs", - columns: new[] { "workflow_run_id", "step_id" }); - - migrationBuilder.CreateIndex( - name: "ix_notification_channels_name", - schema: "werkr", - table: "notification_channels", - column: "name", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_notification_deliveries_channel_id", - schema: "werkr", - table: "notification_deliveries", - column: "channel_id"); - - migrationBuilder.CreateIndex( - name: "ix_notification_deliveries_status_next_retry_utc", - schema: "werkr", - table: "notification_deliveries", - columns: new[] { "status", "next_retry_utc" }); - - migrationBuilder.CreateIndex( - name: "ix_notification_subscriptions_channel_id", - schema: "werkr", - table: "notification_subscriptions", - column: "channel_id"); - - migrationBuilder.CreateIndex( - name: "ix_notification_subscriptions_event_category_id", - schema: "werkr", - table: "notification_subscriptions", - column: "event_category_id"); - - migrationBuilder.CreateIndex( - name: "ix_notification_subscriptions_tag", - schema: "werkr", - table: "notification_subscriptions", - column: "tag"); - - migrationBuilder.CreateIndex( - name: "ix_notification_subscriptions_workflow_id", - schema: "werkr", - table: "notification_subscriptions", - column: "workflow_id"); - - migrationBuilder.CreateIndex( - name: "ix_notification_templates_event_type_id_channel_type", - schema: "werkr", - table: "notification_templates", - columns: new[] { "event_type_id", "channel_type" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_pending_agent_notifications_connection_id_created_utc", - schema: "werkr", - table: "pending_agent_notifications", - columns: new[] { "connection_id", "created_utc" }); - - migrationBuilder.CreateIndex( - name: "ix_registered_connections_connection_name", - schema: "werkr", - table: "registered_connections", - column: "connection_name"); - - migrationBuilder.CreateIndex( - name: "ix_registered_connections_remote_url", - schema: "werkr", - table: "registered_connections", - column: "remote_url"); - - migrationBuilder.CreateIndex( - name: "ix_registration_bundles_bundle_id", - schema: "werkr", - table: "registration_bundles", - column: "bundle_id", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_retention_policies_entity_type", - schema: "werkr", - table: "retention_policies", - column: "entity_type", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_saved_filters_page_key_is_shared", - schema: "werkr", - table: "saved_filters", - columns: new[] { "page_key", "is_shared" }); - - migrationBuilder.CreateIndex( - name: "ix_saved_filters_page_key_owner_id", - schema: "werkr", - table: "saved_filters", - columns: new[] { "page_key", "owner_id" }); - - migrationBuilder.CreateIndex( - name: "ix_schedule_holiday_calendars_holiday_calendar_id", - schema: "werkr", - table: "schedule_holiday_calendars", - column: "holiday_calendar_id"); - - migrationBuilder.CreateIndex( - name: "ix_schedule_holiday_calendars_schedule_id", - schema: "werkr", - table: "schedule_holiday_calendars", - column: "schedule_id", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_task_schedules_schedule_id", - schema: "werkr", - table: "task_schedules", - column: "schedule_id"); - - migrationBuilder.CreateIndex( - name: "ix_task_versions_task_id", - schema: "werkr", - table: "task_versions", - column: "task_id"); - - migrationBuilder.CreateIndex( - name: "ix_task_versions_task_id_version_number", - schema: "werkr", - table: "task_versions", - columns: new[] { "task_id", "version_number" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_tasks_current_version_id", - schema: "werkr", - table: "tasks", - column: "current_version_id"); - - migrationBuilder.CreateIndex( - name: "ix_tasks_workflow_id", - schema: "werkr", - table: "tasks", - column: "workflow_id"); - - migrationBuilder.CreateIndex( - name: "ix_trigger_versions_trigger_id", - schema: "werkr", - table: "trigger_versions", - column: "trigger_id"); - - migrationBuilder.CreateIndex( - name: "ix_trigger_versions_trigger_id_version_number", - schema: "werkr", - table: "trigger_versions", - columns: new[] { "trigger_id", "version_number" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_user_notification_preferences_user_id_event_category_id", - schema: "werkr", - table: "user_notification_preferences", - columns: new[] { "user_id", "event_category_id" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_user_notifications_user_id_is_read_created_utc", - schema: "werkr", - table: "user_notifications", - columns: new[] { "user_id", "is_read", "created_utc" }, - descending: new[] { false, false, true }); - - migrationBuilder.CreateIndex( - name: "ix_user_preferences_user_id_key", - schema: "werkr", - table: "user_preferences", - columns: new[] { "user_id", "key" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_workflow_run_variables_produced_by_job_id", - schema: "werkr", - table: "workflow_run_variables", - column: "produced_by_job_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_run_variables_produced_by_step_id", - schema: "werkr", - table: "workflow_run_variables", - column: "produced_by_step_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_run_variables_workflow_run_id_variable_name_version", - schema: "werkr", - table: "workflow_run_variables", - columns: new[] { "workflow_run_id", "variable_name", "version" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_workflow_runs_workflow_id", - schema: "werkr", - table: "workflow_runs", - column: "workflow_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_runs_workflow_version_id", - schema: "werkr", - table: "workflow_runs", - column: "workflow_version_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_schedules_schedule_id", - schema: "werkr", - table: "workflow_schedules", - column: "schedule_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_step_dependencies_depends_on_step_id", - schema: "werkr", - table: "workflow_step_dependencies", - column: "depends_on_step_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_step_executions_job_id", - schema: "werkr", - table: "workflow_step_executions", - column: "job_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_step_executions_step_id", - schema: "werkr", - table: "workflow_step_executions", - column: "step_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_step_executions_workflow_run_id", - schema: "werkr", - table: "workflow_step_executions", - column: "workflow_run_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_step_executions_workflow_run_id_step_id_attempt", - schema: "werkr", - table: "workflow_step_executions", - columns: new[] { "workflow_run_id", "step_id", "attempt" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_workflow_steps_agent_connection_id_override", - schema: "werkr", - table: "workflow_steps", - column: "agent_connection_id_override"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_steps_child_workflow_id", - schema: "werkr", - table: "workflow_steps", - column: "child_workflow_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_steps_task_id", - schema: "werkr", - table: "workflow_steps", - column: "task_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_steps_task_version_id", - schema: "werkr", - table: "workflow_steps", - column: "task_version_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_steps_workflow_id", - schema: "werkr", - table: "workflow_steps", - column: "workflow_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_variables_workflow_id_name", - schema: "werkr", - table: "workflow_variables", - columns: new[] { "workflow_id", "name" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_workflow_versions_workflow_id", - schema: "werkr", - table: "workflow_versions", - column: "workflow_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_versions_workflow_id_version_number", - schema: "werkr", - table: "workflow_versions", - columns: new[] { "workflow_id", "version_number" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_workflows_current_version_id", - schema: "werkr", - table: "workflows", - column: "current_version_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflows_parent_step_id", - schema: "werkr", - table: "workflows", - column: "parent_step_id"); - - migrationBuilder.AddForeignKey( - name: "fk_file_monitor_triggers_trigger_versions_current_version_id", - schema: "werkr", - table: "file_monitor_triggers", - column: "current_version_id", - principalSchema: "werkr", - principalTable: "trigger_versions", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "fk_file_monitor_triggers_workflow_versions_pinned_workflow_ver", - schema: "werkr", - table: "file_monitor_triggers", - column: "pinned_workflow_version_id", - principalSchema: "werkr", - principalTable: "workflow_versions", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "fk_file_monitor_triggers_workflows_workflow_id", - schema: "werkr", - table: "file_monitor_triggers", - column: "workflow_id", - principalSchema: "werkr", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_jobs_tasks_task_id", - schema: "werkr", - table: "jobs", - column: "task_id", - principalSchema: "werkr", - principalTable: "tasks", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_jobs_workflow_runs_workflow_run_id", - schema: "werkr", - table: "jobs", - column: "workflow_run_id", - principalSchema: "werkr", - principalTable: "workflow_runs", - principalColumn: "id"); - - migrationBuilder.AddForeignKey( - name: "fk_jobs_workflow_steps_step_id", - schema: "werkr", - table: "jobs", - column: "step_id", - principalSchema: "werkr", - principalTable: "workflow_steps", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "fk_notification_subscriptions_workflows_workflow_id", - schema: "werkr", - table: "notification_subscriptions", - column: "workflow_id", - principalSchema: "werkr", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_task_schedules_tasks_task_id", - schema: "werkr", - table: "task_schedules", - column: "task_id", - principalSchema: "werkr", - principalTable: "tasks", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_task_versions_tasks_task_id", - schema: "werkr", - table: "task_versions", - column: "task_id", - principalSchema: "werkr", - principalTable: "tasks", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_tasks_workflows_workflow_id", - schema: "werkr", - table: "tasks", - column: "workflow_id", - principalSchema: "werkr", - principalTable: "workflows", - principalColumn: "id"); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_run_variables_workflow_runs_workflow_run_id", - schema: "werkr", - table: "workflow_run_variables", - column: "workflow_run_id", - principalSchema: "werkr", - principalTable: "workflow_runs", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_run_variables_workflow_steps_produced_by_step_id", - schema: "werkr", - table: "workflow_run_variables", - column: "produced_by_step_id", - principalSchema: "werkr", - principalTable: "workflow_steps", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_runs_workflow_versions_workflow_version_id", - schema: "werkr", - table: "workflow_runs", - column: "workflow_version_id", - principalSchema: "werkr", - principalTable: "workflow_versions", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_runs_workflows_workflow_id", - schema: "werkr", - table: "workflow_runs", - column: "workflow_id", - principalSchema: "werkr", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_schedules_workflows_workflow_id", - schema: "werkr", - table: "workflow_schedules", - column: "workflow_id", - principalSchema: "werkr", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_step_dependencies_workflow_steps_depends_on_step_id", - schema: "werkr", - table: "workflow_step_dependencies", - column: "depends_on_step_id", - principalSchema: "werkr", - principalTable: "workflow_steps", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_step_dependencies_workflow_steps_step_id", - schema: "werkr", - table: "workflow_step_dependencies", - column: "step_id", - principalSchema: "werkr", - principalTable: "workflow_steps", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_step_executions_workflow_steps_step_id", - schema: "werkr", - table: "workflow_step_executions", - column: "step_id", - principalSchema: "werkr", - principalTable: "workflow_steps", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_steps_workflows_child_workflow_id", - schema: "werkr", - table: "workflow_steps", - column: "child_workflow_id", - principalSchema: "werkr", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_steps_workflows_workflow_id", - schema: "werkr", - table: "workflow_steps", - column: "workflow_id", - principalSchema: "werkr", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_variables_workflows_workflow_id", - schema: "werkr", - table: "workflow_variables", - column: "workflow_id", - principalSchema: "werkr", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_versions_workflows_workflow_id", - schema: "werkr", - table: "workflow_versions", - column: "workflow_id", - principalSchema: "werkr", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "fk_workflow_steps_registered_connections_agent_connection_id_o", - schema: "werkr", - table: "workflow_steps"); - - migrationBuilder.DropForeignKey( - name: "fk_file_monitor_triggers_trigger_versions_current_version_id", - schema: "werkr", - table: "file_monitor_triggers"); - - migrationBuilder.DropForeignKey( - name: "fk_workflows_workflow_versions_current_version_id", - schema: "werkr", - table: "workflows"); - - migrationBuilder.DropForeignKey( - name: "fk_tasks_workflows_workflow_id", - schema: "werkr", - table: "tasks"); - - migrationBuilder.DropForeignKey( - name: "fk_workflow_steps_workflows_child_workflow_id", - schema: "werkr", - table: "workflow_steps"); - - migrationBuilder.DropForeignKey( - name: "fk_workflow_steps_workflows_workflow_id", - schema: "werkr", - table: "workflow_steps"); - - migrationBuilder.DropForeignKey( - name: "fk_task_versions_tasks_task_id", - schema: "werkr", - table: "task_versions"); - - migrationBuilder.DropTable( - name: "audit_events", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "configuration_change_logs", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "credential_agent_scopes", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "daily_recurrence", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "holiday_dates", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "monthly_recurrence", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "notification_deliveries", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "notification_subscriptions", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "notification_templates", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "pending_agent_notifications", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "registration_bundles", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "retention_policies", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "saved_filters", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "schedule_expiration", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "schedule_holiday_calendars", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "schedule_repeat_options", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "schedule_start_datetimeinfo", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "task_schedules", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "user_notification_preferences", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "user_notifications", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "user_preferences", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "weekly_recurrence", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "workflow_run_variables", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "workflow_schedules", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "workflow_step_dependencies", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "workflow_step_executions", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "workflow_variables", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "configuration_entries", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "credentials", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "holiday_rules", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "notification_channels", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "jobs", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "holiday_calendars", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "schedules", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "workflow_runs", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "registered_connections", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "trigger_versions", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "file_monitor_triggers", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "workflow_versions", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "workflows", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "workflow_steps", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "tasks", - schema: "werkr"); - - migrationBuilder.DropTable( - name: "task_versions", - schema: "werkr"); - } - } -} diff --git a/src/Werkr.Data/Migrations/Postgres/20260323003632_Initial.Designer.cs b/src/Werkr.Data/Migrations/Postgres/20260329063424_Initial.Designer.cs similarity index 99% rename from src/Werkr.Data/Migrations/Postgres/20260323003632_Initial.Designer.cs rename to src/Werkr.Data/Migrations/Postgres/20260329063424_Initial.Designer.cs index b909701..f45ece8 100644 --- a/src/Werkr.Data/Migrations/Postgres/20260323003632_Initial.Designer.cs +++ b/src/Werkr.Data/Migrations/Postgres/20260329063424_Initial.Designer.cs @@ -12,7 +12,7 @@ namespace Werkr.Data.Migrations.Postgres { [DbContext(typeof(PostgresWerkrDbContext))] - [Migration("20260323003632_Initial")] + [Migration("20260329063424_Initial")] partial class Initial { /// @@ -2868,6 +2868,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.HasOne("Werkr.Data.Entities.Workflows.WorkflowRun", "WorkflowRun") .WithMany("Jobs") .HasForeignKey("WorkflowRunId") + .OnDelete(DeleteBehavior.SetNull) .HasConstraintName("fk_jobs_workflow_runs_workflow_run_id"); b.Navigation("AgentConnection"); diff --git a/src/Werkr.Data/Migrations/Postgres/20260329063424_Initial.cs b/src/Werkr.Data/Migrations/Postgres/20260329063424_Initial.cs new file mode 100644 index 0000000..394f4fb --- /dev/null +++ b/src/Werkr.Data/Migrations/Postgres/20260329063424_Initial.cs @@ -0,0 +1,1943 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace Werkr.Data.Migrations.Postgres; +/// +public partial class Initial : Migration { + /// + protected override void Up( MigrationBuilder migrationBuilder ) { + _ = migrationBuilder.EnsureSchema( + name: "werkr" ); + + _ = migrationBuilder.CreateTable( + name: "audit_events", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityAlwaysColumn ), + event_type_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + event_category = table.Column( type: "character varying(64)", maxLength: 64, nullable: false ), + source_module = table.Column( type: "character varying(64)", maxLength: 64, nullable: false ), + actor_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: true ), + actor_type = table.Column( type: "text", nullable: false ), + entity_type = table.Column( type: "character varying(64)", maxLength: 64, nullable: true ), + entity_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: true ), + action_performed = table.Column( type: "character varying(64)", maxLength: 64, nullable: false ), + details = table.Column( type: "character varying(8192)", maxLength: 8192, nullable: false ), + timestamp_utc = table.Column( type: "timestamp with time zone", nullable: false ), + correlation_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_audit_events", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "configuration_entries", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + key = table.Column( type: "character varying(256)", maxLength: 256, nullable: false ), + value = table.Column( type: "text", nullable: false ), + value_type = table.Column( type: "character varying(32)", maxLength: 32, nullable: false ), + category = table.Column( type: "character varying(64)", maxLength: 64, nullable: false ), + description = table.Column( type: "character varying(500)", maxLength: 500, nullable: true ), + scope_level = table.Column( type: "integer", nullable: false ), + scope_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: true ), + sync_version = table.Column( type: "bigint", nullable: false ), + validation_rules = table.Column( type: "text", nullable: true ), + default_value = table.Column( type: "text", nullable: false ), + created_utc = table.Column( type: "timestamp with time zone", nullable: false ), + modified_utc = table.Column( type: "timestamp with time zone", nullable: false ), + modified_by_user_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_configuration_entries", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "credentials", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + name = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + type = table.Column( type: "text", nullable: false ), + encrypted_value = table.Column( type: "text", nullable: false ), + description = table.Column( type: "character varying(500)", maxLength: 500, nullable: true ), + created_utc = table.Column( type: "timestamp with time zone", nullable: false ), + modified_utc = table.Column( type: "timestamp with time zone", nullable: false ), + created_by_user_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + modified_by_user_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_credentials", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "holiday_calendars", + schema: "werkr", + columns: table => new { + id = table.Column( type: "uuid", nullable: false ), + name = table.Column( type: "character varying(256)", maxLength: 256, nullable: false ), + description = table.Column( type: "character varying(1024)", maxLength: 1024, nullable: false ), + is_system_calendar = table.Column( type: "boolean", nullable: false ), + created_utc = table.Column( type: "timestamp with time zone", nullable: false ), + updated_utc = table.Column( type: "timestamp with time zone", nullable: false ), + working_days = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_holiday_calendars", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "notification_channels", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + name = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + channel_type = table.Column( type: "character varying(32)", maxLength: 32, nullable: false ), + configuration = table.Column( type: "text", nullable: false ), + is_enabled = table.Column( type: "boolean", nullable: false ), + created_utc = table.Column( type: "timestamp with time zone", nullable: false ), + modified_utc = table.Column( type: "timestamp with time zone", nullable: false ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_notification_channels", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "notification_templates", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + event_type_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + channel_type = table.Column( type: "character varying(32)", maxLength: 32, nullable: false ), + subject = table.Column( type: "character varying(500)", maxLength: 500, nullable: true ), + body = table.Column( type: "character varying(8000)", maxLength: 8000, nullable: false ), + is_default = table.Column( type: "boolean", nullable: false ), + created_utc = table.Column( type: "timestamp with time zone", nullable: false ), + modified_utc = table.Column( type: "timestamp with time zone", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_notification_templates", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "registered_connections", + schema: "werkr", + columns: table => new { + id = table.Column( type: "uuid", nullable: false ), + connection_name = table.Column( type: "character varying(256)", maxLength: 256, nullable: false ), + remote_url = table.Column( type: "character varying(2048)", maxLength: 2048, nullable: false ), + local_public_key = table.Column( type: "text", nullable: false ), + local_private_key = table.Column( type: "text", nullable: false ), + remote_public_key = table.Column( type: "text", nullable: false ), + outbound_api_key = table.Column( type: "character varying(512)", maxLength: 512, nullable: false ), + inbound_api_key_hash = table.Column( type: "character varying(512)", maxLength: 512, nullable: false ), + shared_key = table.Column( type: "text", nullable: false ), + previous_shared_key = table.Column( type: "text", nullable: true ), + active_key_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: true ), + previous_key_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: true ), + key_rotated_at_utc = table.Column( type: "timestamp with time zone", nullable: true ), + is_server = table.Column( type: "boolean", nullable: false ), + status = table.Column( type: "text", nullable: false ), + last_seen = table.Column( type: "timestamp with time zone", nullable: true ), + tags = table.Column( type: "text", nullable: false ), + allowed_paths = table.Column( type: "text", nullable: false ), + enforce_allowlist = table.Column( type: "boolean", nullable: false ), + agent_version = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + pending_shared_key = table.Column( type: "text", nullable: true ), + pending_key_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: true ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_registered_connections", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "registration_bundles", + schema: "werkr", + columns: table => new { + id = table.Column( type: "uuid", nullable: false ), + connection_name = table.Column( type: "character varying(256)", maxLength: 256, nullable: false ), + server_public_key = table.Column( type: "text", nullable: false ), + server_private_key = table.Column( type: "text", nullable: false ), + bundle_id = table.Column( type: "text", nullable: false ), + status = table.Column( type: "text", nullable: false ), + expires_at = table.Column( type: "timestamp with time zone", nullable: false ), + key_size = table.Column( type: "integer", nullable: false ), + tags = table.Column( type: "text[]", nullable: false ), + allowed_paths = table.Column( type: "text", nullable: false ), + registration_key = table.Column( type: "text", nullable: true ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_registration_bundles", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "retention_policies", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + entity_type = table.Column( type: "character varying(64)", maxLength: 64, nullable: false ), + retention_days = table.Column( type: "integer", nullable: false ), + is_enabled = table.Column( type: "boolean", nullable: false ), + modified_utc = table.Column( type: "timestamp with time zone", nullable: false ), + modified_by_user_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_retention_policies", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "saved_filters", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + owner_id = table.Column( type: "character varying(450)", maxLength: 450, nullable: false ), + page_key = table.Column( type: "character varying(50)", maxLength: 50, nullable: false ), + name = table.Column( type: "character varying(200)", maxLength: 200, nullable: false ), + criteria_json = table.Column( type: "character varying(4096)", maxLength: 4096, nullable: false ), + is_shared = table.Column( type: "boolean", nullable: false ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_saved_filters", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "schedules", + schema: "werkr", + columns: table => new { + id = table.Column( type: "uuid", nullable: false ), + name = table.Column( type: "character varying(256)", maxLength: 256, nullable: false ), + stop_task_after_minutes = table.Column( type: "bigint", nullable: false ), + catch_up_enabled = table.Column( type: "boolean", nullable: false ), + shift_mode = table.Column( type: "integer", nullable: false ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_schedules", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "user_notification_preferences", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + user_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + event_category_id = table.Column( type: "character varying(64)", maxLength: 64, nullable: false ), + channel_type = table.Column( type: "character varying(32)", maxLength: 32, nullable: false ), + is_enabled = table.Column( type: "boolean", nullable: false ), + quiet_hours_start = table.Column( type: "time without time zone", nullable: true ), + quiet_hours_end = table.Column( type: "time without time zone", nullable: true ), + quiet_hours_timezone = table.Column( type: "character varying(64)", maxLength: 64, nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_user_notification_preferences", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "user_notifications", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + user_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + event_type_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + event_category_id = table.Column( type: "character varying(64)", maxLength: 64, nullable: false ), + title = table.Column( type: "character varying(256)", maxLength: 256, nullable: false ), + body = table.Column( type: "character varying(2000)", maxLength: 2000, nullable: false ), + is_read = table.Column( type: "boolean", nullable: false ), + created_utc = table.Column( type: "timestamp with time zone", nullable: false ), + read_utc = table.Column( type: "timestamp with time zone", nullable: true ), + link = table.Column( type: "character varying(512)", maxLength: 512, nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_user_notifications", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "user_preferences", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + user_id = table.Column( type: "character varying(450)", maxLength: 450, nullable: false ), + key = table.Column( type: "character varying(100)", maxLength: 100, nullable: false ), + value = table.Column( type: "character varying(500)", maxLength: 500, nullable: false ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_user_preferences", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "configuration_change_logs", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + configuration_entry_id = table.Column( type: "bigint", nullable: false ), + key = table.Column( type: "character varying(256)", maxLength: 256, nullable: false ), + previous_value = table.Column( type: "text", nullable: true ), + new_value = table.Column( type: "text", nullable: false ), + changed_by_user_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + changed_utc = table.Column( type: "timestamp with time zone", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_configuration_change_logs", x => x.id ); + _ = table.ForeignKey( + name: "fk_configuration_change_logs_configuration_entries_configurati", + column: x => x.configuration_entry_id, + principalSchema: "werkr", + principalTable: "configuration_entries", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "holiday_rules", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityAlwaysColumn ), + holiday_calendar_id = table.Column( type: "uuid", nullable: false ), + name = table.Column( type: "character varying(256)", maxLength: 256, nullable: false ), + rule_type = table.Column( type: "text", nullable: false ), + month = table.Column( type: "integer", nullable: true ), + day = table.Column( type: "integer", nullable: true ), + day_of_week = table.Column( type: "integer", nullable: true ), + week_number = table.Column( type: "integer", nullable: true ), + window_start = table.Column( type: "time without time zone", nullable: true ), + window_end = table.Column( type: "time without time zone", nullable: true ), + window_time_zone_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: true ), + observance_rule = table.Column( type: "text", nullable: false ), + year_start = table.Column( type: "integer", nullable: true ), + year_end = table.Column( type: "integer", nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_holiday_rules", x => x.id ); + _ = table.ForeignKey( + name: "fk_holiday_rules_holiday_calendars_holiday_calendar_id", + column: x => x.holiday_calendar_id, + principalSchema: "werkr", + principalTable: "holiday_calendars", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "notification_deliveries", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + channel_id = table.Column( type: "bigint", nullable: false ), + event_type_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + recipient_id = table.Column( type: "character varying(256)", maxLength: 256, nullable: false ), + status = table.Column( type: "integer", nullable: false ), + attempt_count = table.Column( type: "integer", nullable: false ), + max_attempts = table.Column( type: "integer", nullable: false ), + last_attempt_utc = table.Column( type: "timestamp with time zone", nullable: true ), + next_retry_utc = table.Column( type: "timestamp with time zone", nullable: true ), + error_message = table.Column( type: "character varying(2000)", maxLength: 2000, nullable: true ), + payload_json = table.Column( type: "text", nullable: false ), + created_utc = table.Column( type: "timestamp with time zone", nullable: false ), + completed_utc = table.Column( type: "timestamp with time zone", nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_notification_deliveries", x => x.id ); + _ = table.ForeignKey( + name: "fk_notification_deliveries_notification_channels_channel_id", + column: x => x.channel_id, + principalSchema: "werkr", + principalTable: "notification_channels", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "credential_agent_scopes", + schema: "werkr", + columns: table => new { + credential_id = table.Column( type: "bigint", nullable: false ), + agent_connection_id = table.Column( type: "uuid", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_credential_agent_scopes", x => new { x.credential_id, x.agent_connection_id } ); + _ = table.ForeignKey( + name: "fk_credential_agent_scopes_credentials_credential_id", + column: x => x.credential_id, + principalSchema: "werkr", + principalTable: "credentials", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + _ = table.ForeignKey( + name: "fk_credential_agent_scopes_registered_connections_agent_connec", + column: x => x.agent_connection_id, + principalSchema: "werkr", + principalTable: "registered_connections", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "pending_agent_notifications", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + connection_id = table.Column( type: "uuid", nullable: false ), + channel = table.Column( type: "character varying(64)", maxLength: 64, nullable: false ), + payload = table.Column( type: "character varying(2000)", maxLength: 2000, nullable: true ), + created_utc = table.Column( type: "timestamp with time zone", nullable: false ), + expires_utc = table.Column( type: "timestamp with time zone", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_pending_agent_notifications", x => x.id ); + _ = table.ForeignKey( + name: "fk_pending_agent_notifications_registered_connections_connecti", + column: x => x.connection_id, + principalSchema: "werkr", + principalTable: "registered_connections", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "daily_recurrence", + schema: "werkr", + columns: table => new { + schedule_id = table.Column( type: "uuid", nullable: false ), + day_interval = table.Column( type: "integer", nullable: false ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_daily_recurrence", x => x.schedule_id ); + _ = table.ForeignKey( + name: "fk_daily_recurrence_schedules_schedule_id", + column: x => x.schedule_id, + principalSchema: "werkr", + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "monthly_recurrence", + schema: "werkr", + columns: table => new { + schedule_id = table.Column( type: "uuid", nullable: false ), + day_numbers = table.Column( type: "text", nullable: true ), + months_of_year = table.Column( type: "integer", nullable: false ), + week_number = table.Column( type: "integer", nullable: true ), + days_of_week = table.Column( type: "integer", nullable: true ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_monthly_recurrence", x => x.schedule_id ); + _ = table.ForeignKey( + name: "fk_monthly_recurrence_schedules_schedule_id", + column: x => x.schedule_id, + principalSchema: "werkr", + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "schedule_expiration", + schema: "werkr", + columns: table => new { + schedule_id = table.Column( type: "uuid", nullable: false ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ), + date = table.Column( type: "date", nullable: false ), + time = table.Column( type: "time without time zone", nullable: false ), + time_zone = table.Column( type: "text", nullable: false ), + is_fixed_offset = table.Column( type: "boolean", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_schedule_expiration", x => x.schedule_id ); + _ = table.ForeignKey( + name: "fk_schedule_expiration_schedules_schedule_id", + column: x => x.schedule_id, + principalSchema: "werkr", + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "schedule_holiday_calendars", + schema: "werkr", + columns: table => new { + schedule_id = table.Column( type: "uuid", nullable: false ), + holiday_calendar_id = table.Column( type: "uuid", nullable: false ), + mode = table.Column( type: "text", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_schedule_holiday_calendars", x => new { x.schedule_id, x.holiday_calendar_id } ); + _ = table.ForeignKey( + name: "fk_schedule_holiday_calendars_holiday_calendars_holiday_calend", + column: x => x.holiday_calendar_id, + principalSchema: "werkr", + principalTable: "holiday_calendars", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + _ = table.ForeignKey( + name: "fk_schedule_holiday_calendars_schedules_schedule_id", + column: x => x.schedule_id, + principalSchema: "werkr", + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "schedule_repeat_options", + schema: "werkr", + columns: table => new { + schedule_id = table.Column( type: "uuid", nullable: false ), + repeat_interval_minutes = table.Column( type: "integer", nullable: false ), + repeat_duration_minutes = table.Column( type: "integer", nullable: false ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_schedule_repeat_options", x => x.schedule_id ); + _ = table.ForeignKey( + name: "fk_schedule_repeat_options_schedules_schedule_id", + column: x => x.schedule_id, + principalSchema: "werkr", + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "schedule_start_datetimeinfo", + schema: "werkr", + columns: table => new { + schedule_id = table.Column( type: "uuid", nullable: false ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ), + date = table.Column( type: "date", nullable: false ), + time = table.Column( type: "time without time zone", nullable: false ), + time_zone = table.Column( type: "text", nullable: false ), + is_fixed_offset = table.Column( type: "boolean", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_schedule_start_datetimeinfo", x => x.schedule_id ); + _ = table.ForeignKey( + name: "fk_schedule_start_datetimeinfo_schedules_schedule_id", + column: x => x.schedule_id, + principalSchema: "werkr", + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "weekly_recurrence", + schema: "werkr", + columns: table => new { + schedule_id = table.Column( type: "uuid", nullable: false ), + week_interval = table.Column( type: "integer", nullable: false ), + days_of_week = table.Column( type: "integer", nullable: false ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_weekly_recurrence", x => x.schedule_id ); + _ = table.ForeignKey( + name: "fk_weekly_recurrence_schedules_schedule_id", + column: x => x.schedule_id, + principalSchema: "werkr", + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "holiday_dates", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityAlwaysColumn ), + holiday_calendar_id = table.Column( type: "uuid", nullable: false ), + holiday_rule_id = table.Column( type: "bigint", nullable: true ), + date = table.Column( type: "date", nullable: false ), + name = table.Column( type: "character varying(256)", maxLength: 256, nullable: false ), + year = table.Column( type: "integer", nullable: false ), + window_start = table.Column( type: "time without time zone", nullable: true ), + window_end = table.Column( type: "time without time zone", nullable: true ), + window_time_zone_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_holiday_dates", x => x.id ); + _ = table.ForeignKey( + name: "fk_holiday_dates_holiday_calendars_holiday_calendar_id", + column: x => x.holiday_calendar_id, + principalSchema: "werkr", + principalTable: "holiday_calendars", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + _ = table.ForeignKey( + name: "fk_holiday_dates_holiday_rules_holiday_rule_id", + column: x => x.holiday_rule_id, + principalSchema: "werkr", + principalTable: "holiday_rules", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + } ); + + _ = migrationBuilder.CreateTable( + name: "file_monitor_triggers", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + workflow_id = table.Column( type: "bigint", nullable: false ), + watch_directory = table.Column( type: "character varying(500)", maxLength: 500, nullable: false ), + file_pattern = table.Column( type: "character varying(200)", maxLength: 200, nullable: false ), + event_types = table.Column( type: "text", nullable: false ), + debounce_ms = table.Column( type: "integer", nullable: false ), + enabled = table.Column( type: "boolean", nullable: false ), + target_tags = table.Column( type: "text", nullable: true ), + current_version_id = table.Column( type: "bigint", nullable: true ), + version_binding_mode = table.Column( type: "text", nullable: false ), + pinned_workflow_version_id = table.Column( type: "bigint", nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_file_monitor_triggers", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "trigger_versions", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + trigger_id = table.Column( type: "bigint", nullable: false ), + version_number = table.Column( type: "integer", nullable: false ), + definition = table.Column( type: "text", nullable: false ), + created_by_user_id = table.Column( type: "character varying(450)", maxLength: 450, nullable: true ), + change_description = table.Column( type: "character varying(500)", maxLength: 500, nullable: true ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_trigger_versions", x => x.id ); + _ = table.ForeignKey( + name: "fk_trigger_versions_file_monitor_triggers_trigger_id", + column: x => x.trigger_id, + principalSchema: "werkr", + principalTable: "file_monitor_triggers", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "jobs", + schema: "werkr", + columns: table => new { + id = table.Column( type: "uuid", nullable: false ), + task_id = table.Column( type: "bigint", nullable: false ), + task_snapshot = table.Column( type: "character varying(8000)", maxLength: 8000, nullable: false ), + runtime_seconds = table.Column( type: "double precision", nullable: false ), + start_time = table.Column( type: "timestamp with time zone", nullable: false ), + end_time = table.Column( type: "timestamp with time zone", nullable: true ), + success = table.Column( type: "boolean", nullable: false ), + agent_connection_id = table.Column( type: "uuid", nullable: true ), + exit_code = table.Column( type: "integer", nullable: true ), + error_category = table.Column( type: "text", nullable: false ), + output = table.Column( type: "character varying(2000)", maxLength: 2000, nullable: true ), + output_path = table.Column( type: "character varying(512)", maxLength: 512, nullable: true ), + workflow_run_id = table.Column( type: "uuid", nullable: true ), + schedule_id = table.Column( type: "uuid", nullable: true ), + step_id = table.Column( type: "bigint", nullable: true ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_jobs", x => x.id ); + _ = table.ForeignKey( + name: "fk_jobs_registered_connections_agent_connection_id", + column: x => x.agent_connection_id, + principalSchema: "werkr", + principalTable: "registered_connections", + principalColumn: "id" ); + _ = table.ForeignKey( + name: "fk_jobs_schedules_schedule_id", + column: x => x.schedule_id, + principalSchema: "werkr", + principalTable: "schedules", + principalColumn: "id" ); + } ); + + _ = migrationBuilder.CreateTable( + name: "notification_subscriptions", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + subscription_type = table.Column( type: "integer", nullable: false ), + workflow_id = table.Column( type: "bigint", nullable: true ), + tag = table.Column( type: "character varying(128)", maxLength: 128, nullable: true ), + event_category_id = table.Column( type: "character varying(64)", maxLength: 64, nullable: false ), + channel_id = table.Column( type: "bigint", nullable: false ), + is_enabled = table.Column( type: "boolean", nullable: false ), + created_by_user_id = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + created_utc = table.Column( type: "timestamp with time zone", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_notification_subscriptions", x => x.id ); + _ = table.ForeignKey( + name: "fk_notification_subscriptions_notification_channels_channel_id", + column: x => x.channel_id, + principalSchema: "werkr", + principalTable: "notification_channels", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "task_schedules", + schema: "werkr", + columns: table => new { + task_id = table.Column( type: "bigint", nullable: false ), + schedule_id = table.Column( type: "uuid", nullable: false ), + created_at_utc = table.Column( type: "timestamp with time zone", nullable: false ), + is_one_time = table.Column( type: "boolean", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_task_schedules", x => new { x.task_id, x.schedule_id } ); + _ = table.ForeignKey( + name: "fk_task_schedules_schedules_schedule_id", + column: x => x.schedule_id, + principalSchema: "werkr", + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "task_versions", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + task_id = table.Column( type: "bigint", nullable: false ), + version_number = table.Column( type: "integer", nullable: false ), + definition = table.Column( type: "text", nullable: false ), + created_by_user_id = table.Column( type: "character varying(450)", maxLength: 450, nullable: true ), + change_description = table.Column( type: "character varying(500)", maxLength: 500, nullable: true ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_task_versions", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "tasks", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + name = table.Column( type: "character varying(256)", maxLength: 256, nullable: false ), + description = table.Column( type: "character varying(2000)", maxLength: 2000, nullable: false ), + action_type = table.Column( type: "text", nullable: false ), + workflow_id = table.Column( type: "bigint", nullable: true ), + content = table.Column( type: "character varying(8000)", maxLength: 8000, nullable: false ), + arguments = table.Column( type: "text", nullable: true ), + target_tags = table.Column( type: "text", nullable: false ), + enabled = table.Column( type: "boolean", nullable: false ), + is_ephemeral = table.Column( type: "boolean", nullable: false ), + timeout_minutes = table.Column( type: "bigint", nullable: true ), + sync_interval_minutes = table.Column( type: "integer", nullable: false ), + success_criteria = table.Column( type: "character varying(500)", maxLength: 500, nullable: true ), + action_sub_type = table.Column( type: "character varying(30)", maxLength: 30, nullable: true ), + action_parameters = table.Column( type: "text", nullable: true ), + current_version_id = table.Column( type: "bigint", nullable: true ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_tasks", x => x.id ); + _ = table.ForeignKey( + name: "fk_tasks_task_versions_current_version_id", + column: x => x.current_version_id, + principalSchema: "werkr", + principalTable: "task_versions", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_run_variables", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + workflow_run_id = table.Column( type: "uuid", nullable: false ), + variable_name = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + value = table.Column( type: "text", nullable: false ), + version = table.Column( type: "integer", nullable: false ), + produced_by_step_id = table.Column( type: "bigint", nullable: true ), + produced_by_job_id = table.Column( type: "uuid", nullable: true ), + source = table.Column( type: "text", nullable: false ), + created = table.Column( type: "timestamp with time zone", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_run_variables", x => x.id ); + _ = table.ForeignKey( + name: "fk_workflow_run_variables_jobs_produced_by_job_id", + column: x => x.produced_by_job_id, + principalSchema: "werkr", + principalTable: "jobs", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_runs", + schema: "werkr", + columns: table => new { + id = table.Column( type: "uuid", nullable: false ), + workflow_id = table.Column( type: "bigint", nullable: false ), + start_time = table.Column( type: "timestamp with time zone", nullable: false ), + end_time = table.Column( type: "timestamp with time zone", nullable: true ), + status = table.Column( type: "text", nullable: false ), + workflow_version_id = table.Column( type: "bigint", nullable: true ), + workflow_name_snapshot = table.Column( type: "character varying(200)", maxLength: 200, nullable: true ), + workflow_version_snapshot = table.Column( type: "integer", nullable: true ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_runs", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_schedules", + schema: "werkr", + columns: table => new { + workflow_id = table.Column( type: "bigint", nullable: false ), + schedule_id = table.Column( type: "uuid", nullable: false ), + created_at_utc = table.Column( type: "timestamp with time zone", nullable: false ), + is_one_time = table.Column( type: "boolean", nullable: false ), + workflow_run_id = table.Column( type: "uuid", nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_schedules", x => new { x.workflow_id, x.schedule_id } ); + _ = table.ForeignKey( + name: "fk_workflow_schedules_schedules_schedule_id", + column: x => x.schedule_id, + principalSchema: "werkr", + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_step_dependencies", + schema: "werkr", + columns: table => new { + step_id = table.Column( type: "bigint", nullable: false ), + depends_on_step_id = table.Column( type: "bigint", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_step_dependencies", x => new { x.step_id, x.depends_on_step_id } ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_step_executions", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + workflow_run_id = table.Column( type: "uuid", nullable: false ), + step_id = table.Column( type: "bigint", nullable: false ), + attempt = table.Column( type: "integer", nullable: false ), + status = table.Column( type: "text", nullable: false ), + start_time = table.Column( type: "timestamp with time zone", nullable: true ), + end_time = table.Column( type: "timestamp with time zone", nullable: true ), + job_id = table.Column( type: "uuid", nullable: true ), + error_message = table.Column( type: "character varying(4000)", maxLength: 4000, nullable: true ), + skip_reason = table.Column( type: "character varying(2000)", maxLength: 2000, nullable: true ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_step_executions", x => x.id ); + _ = table.ForeignKey( + name: "fk_workflow_step_executions_jobs_job_id", + column: x => x.job_id, + principalSchema: "werkr", + principalTable: "jobs", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + _ = table.ForeignKey( + name: "fk_workflow_step_executions_workflow_runs_workflow_run_id", + column: x => x.workflow_run_id, + principalSchema: "werkr", + principalTable: "workflow_runs", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_steps", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + workflow_id = table.Column( type: "bigint", nullable: false ), + task_id = table.Column( type: "bigint", nullable: true ), + order = table.Column( type: "integer", nullable: false ), + control_statement = table.Column( type: "text", nullable: false ), + condition_expression = table.Column( type: "character varying(2000)", maxLength: 2000, nullable: true ), + max_iterations = table.Column( type: "integer", nullable: false ), + agent_connection_id_override = table.Column( type: "uuid", nullable: true ), + dependency_mode = table.Column( type: "text", nullable: false ), + input_variable_name = table.Column( type: "character varying(128)", maxLength: 128, nullable: true ), + output_variable_name = table.Column( type: "character varying(128)", maxLength: 128, nullable: true ), + is_composite = table.Column( type: "boolean", nullable: false ), + composite_type = table.Column( type: "text", nullable: false ), + child_workflow_id = table.Column( type: "bigint", nullable: true ), + iteration_variable_name = table.Column( type: "character varying(128)", maxLength: 128, nullable: true ), + collection_variable_name = table.Column( type: "character varying(128)", maxLength: 128, nullable: true ), + task_version_id = table.Column( type: "bigint", nullable: true ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_steps", x => x.id ); + _ = table.ForeignKey( + name: "fk_workflow_steps_registered_connections_agent_connection_id_o", + column: x => x.agent_connection_id_override, + principalSchema: "werkr", + principalTable: "registered_connections", + principalColumn: "id" ); + _ = table.ForeignKey( + name: "fk_workflow_steps_task_versions_task_version_id", + column: x => x.task_version_id, + principalSchema: "werkr", + principalTable: "task_versions", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + _ = table.ForeignKey( + name: "fk_workflow_steps_tasks_task_id", + column: x => x.task_id, + principalSchema: "werkr", + principalTable: "tasks", + principalColumn: "id" ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_variables", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + workflow_id = table.Column( type: "bigint", nullable: false ), + name = table.Column( type: "character varying(128)", maxLength: 128, nullable: false ), + description = table.Column( type: "character varying(500)", maxLength: 500, nullable: true ), + default_value = table.Column( type: "text", nullable: true ), + data_type = table.Column( type: "character varying(32)", maxLength: 32, nullable: true ), + is_required = table.Column( type: "boolean", nullable: false ), + log_redaction = table.Column( type: "boolean", nullable: false ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_variables", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_versions", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + workflow_id = table.Column( type: "bigint", nullable: false ), + version_number = table.Column( type: "integer", nullable: false ), + definition = table.Column( type: "text", nullable: false ), + created_by_user_id = table.Column( type: "character varying(450)", maxLength: 450, nullable: true ), + change_description = table.Column( type: "character varying(500)", maxLength: 500, nullable: true ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_versions", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflows", + schema: "werkr", + columns: table => new { + id = table.Column( type: "bigint", nullable: false ) + .Annotation( "Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn ), + name = table.Column( type: "character varying(256)", maxLength: 256, nullable: false ), + description = table.Column( type: "character varying(2000)", maxLength: 2000, nullable: false ), + enabled = table.Column( type: "boolean", nullable: false ), + target_tags = table.Column( type: "text", nullable: true ), + annotations = table.Column( type: "text", nullable: true ), + parent_step_id = table.Column( type: "bigint", nullable: true ), + is_child_workflow = table.Column( type: "boolean", nullable: false ), + current_version_id = table.Column( type: "bigint", nullable: true ), + created = table.Column( type: "timestamp with time zone", nullable: false ), + last_updated = table.Column( type: "timestamp with time zone", nullable: false ), + version = table.Column( type: "integer", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflows", x => x.id ); + _ = table.ForeignKey( + name: "fk_workflows_workflow_steps_parent_step_id", + column: x => x.parent_step_id, + principalSchema: "werkr", + principalTable: "workflow_steps", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + _ = table.ForeignKey( + name: "fk_workflows_workflow_versions_current_version_id", + column: x => x.current_version_id, + principalSchema: "werkr", + principalTable: "workflow_versions", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_audit_events_actor_id", + schema: "werkr", + table: "audit_events", + column: "actor_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_audit_events_entity_type_entity_id", + schema: "werkr", + table: "audit_events", + columns: new[] { "entity_type", "entity_id" } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_audit_events_event_category", + schema: "werkr", + table: "audit_events", + column: "event_category" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_audit_events_event_type_id", + schema: "werkr", + table: "audit_events", + column: "event_type_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_audit_events_timestamp_utc", + schema: "werkr", + table: "audit_events", + column: "timestamp_utc", + descending: new bool[0] ); + + _ = migrationBuilder.CreateIndex( + name: "ix_configuration_change_logs_configuration_entry_id", + schema: "werkr", + table: "configuration_change_logs", + column: "configuration_entry_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_configuration_entries_category", + schema: "werkr", + table: "configuration_entries", + column: "category" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_configuration_entries_key_scope_level_scope_id", + schema: "werkr", + table: "configuration_entries", + columns: new[] { "key", "scope_level", "scope_id" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_configuration_entries_scope_id", + schema: "werkr", + table: "configuration_entries", + column: "scope_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_configuration_entries_sync_version", + schema: "werkr", + table: "configuration_entries", + column: "sync_version" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_credential_agent_scopes_agent_connection_id", + schema: "werkr", + table: "credential_agent_scopes", + column: "agent_connection_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_credentials_name", + schema: "werkr", + table: "credentials", + column: "name", + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_file_monitor_triggers_current_version_id", + schema: "werkr", + table: "file_monitor_triggers", + column: "current_version_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_file_monitor_triggers_pinned_workflow_version_id", + schema: "werkr", + table: "file_monitor_triggers", + column: "pinned_workflow_version_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_file_monitor_triggers_workflow_id", + schema: "werkr", + table: "file_monitor_triggers", + column: "workflow_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_holiday_calendars_name", + schema: "werkr", + table: "holiday_calendars", + column: "name", + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_holiday_dates_holiday_calendar_id_date", + schema: "werkr", + table: "holiday_dates", + columns: new[] { "holiday_calendar_id", "date" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_holiday_dates_holiday_rule_id", + schema: "werkr", + table: "holiday_dates", + column: "holiday_rule_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_holiday_rules_holiday_calendar_id", + schema: "werkr", + table: "holiday_rules", + column: "holiday_calendar_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_jobs_agent_connection_id", + schema: "werkr", + table: "jobs", + column: "agent_connection_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_jobs_schedule_id", + schema: "werkr", + table: "jobs", + column: "schedule_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_jobs_step_id", + schema: "werkr", + table: "jobs", + column: "step_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_jobs_task_id", + schema: "werkr", + table: "jobs", + column: "task_id" ); + + _ = migrationBuilder.CreateIndex( + name: "IX_jobs_WorkflowRunId_StepId", + schema: "werkr", + table: "jobs", + columns: new[] { "workflow_run_id", "step_id" } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_channels_name", + schema: "werkr", + table: "notification_channels", + column: "name", + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_deliveries_channel_id", + schema: "werkr", + table: "notification_deliveries", + column: "channel_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_deliveries_status_next_retry_utc", + schema: "werkr", + table: "notification_deliveries", + columns: new[] { "status", "next_retry_utc" } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_subscriptions_channel_id", + schema: "werkr", + table: "notification_subscriptions", + column: "channel_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_subscriptions_event_category_id", + schema: "werkr", + table: "notification_subscriptions", + column: "event_category_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_subscriptions_tag", + schema: "werkr", + table: "notification_subscriptions", + column: "tag" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_subscriptions_workflow_id", + schema: "werkr", + table: "notification_subscriptions", + column: "workflow_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_templates_event_type_id_channel_type", + schema: "werkr", + table: "notification_templates", + columns: new[] { "event_type_id", "channel_type" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_pending_agent_notifications_connection_id_created_utc", + schema: "werkr", + table: "pending_agent_notifications", + columns: new[] { "connection_id", "created_utc" } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_registered_connections_connection_name", + schema: "werkr", + table: "registered_connections", + column: "connection_name" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_registered_connections_remote_url", + schema: "werkr", + table: "registered_connections", + column: "remote_url" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_registration_bundles_bundle_id", + schema: "werkr", + table: "registration_bundles", + column: "bundle_id", + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_retention_policies_entity_type", + schema: "werkr", + table: "retention_policies", + column: "entity_type", + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_saved_filters_page_key_is_shared", + schema: "werkr", + table: "saved_filters", + columns: new[] { "page_key", "is_shared" } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_saved_filters_page_key_owner_id", + schema: "werkr", + table: "saved_filters", + columns: new[] { "page_key", "owner_id" } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_schedule_holiday_calendars_holiday_calendar_id", + schema: "werkr", + table: "schedule_holiday_calendars", + column: "holiday_calendar_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_schedule_holiday_calendars_schedule_id", + schema: "werkr", + table: "schedule_holiday_calendars", + column: "schedule_id", + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_task_schedules_schedule_id", + schema: "werkr", + table: "task_schedules", + column: "schedule_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_task_versions_task_id", + schema: "werkr", + table: "task_versions", + column: "task_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_task_versions_task_id_version_number", + schema: "werkr", + table: "task_versions", + columns: new[] { "task_id", "version_number" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_tasks_current_version_id", + schema: "werkr", + table: "tasks", + column: "current_version_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_tasks_workflow_id", + schema: "werkr", + table: "tasks", + column: "workflow_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_trigger_versions_trigger_id", + schema: "werkr", + table: "trigger_versions", + column: "trigger_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_trigger_versions_trigger_id_version_number", + schema: "werkr", + table: "trigger_versions", + columns: new[] { "trigger_id", "version_number" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_user_notification_preferences_user_id_event_category_id", + schema: "werkr", + table: "user_notification_preferences", + columns: new[] { "user_id", "event_category_id" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_user_notifications_user_id_is_read_created_utc", + schema: "werkr", + table: "user_notifications", + columns: new[] { "user_id", "is_read", "created_utc" }, + descending: new[] { false, false, true } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_user_preferences_user_id_key", + schema: "werkr", + table: "user_preferences", + columns: new[] { "user_id", "key" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_run_variables_produced_by_job_id", + schema: "werkr", + table: "workflow_run_variables", + column: "produced_by_job_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_run_variables_produced_by_step_id", + schema: "werkr", + table: "workflow_run_variables", + column: "produced_by_step_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_run_variables_workflow_run_id_variable_name_version", + schema: "werkr", + table: "workflow_run_variables", + columns: new[] { "workflow_run_id", "variable_name", "version" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_runs_workflow_id", + schema: "werkr", + table: "workflow_runs", + column: "workflow_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_runs_workflow_version_id", + schema: "werkr", + table: "workflow_runs", + column: "workflow_version_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_schedules_schedule_id", + schema: "werkr", + table: "workflow_schedules", + column: "schedule_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_step_dependencies_depends_on_step_id", + schema: "werkr", + table: "workflow_step_dependencies", + column: "depends_on_step_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_step_executions_job_id", + schema: "werkr", + table: "workflow_step_executions", + column: "job_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_step_executions_step_id", + schema: "werkr", + table: "workflow_step_executions", + column: "step_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_step_executions_workflow_run_id", + schema: "werkr", + table: "workflow_step_executions", + column: "workflow_run_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_step_executions_workflow_run_id_step_id_attempt", + schema: "werkr", + table: "workflow_step_executions", + columns: new[] { "workflow_run_id", "step_id", "attempt" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_steps_agent_connection_id_override", + schema: "werkr", + table: "workflow_steps", + column: "agent_connection_id_override" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_steps_child_workflow_id", + schema: "werkr", + table: "workflow_steps", + column: "child_workflow_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_steps_task_id", + schema: "werkr", + table: "workflow_steps", + column: "task_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_steps_task_version_id", + schema: "werkr", + table: "workflow_steps", + column: "task_version_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_steps_workflow_id", + schema: "werkr", + table: "workflow_steps", + column: "workflow_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_variables_workflow_id_name", + schema: "werkr", + table: "workflow_variables", + columns: new[] { "workflow_id", "name" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_versions_workflow_id", + schema: "werkr", + table: "workflow_versions", + column: "workflow_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_versions_workflow_id_version_number", + schema: "werkr", + table: "workflow_versions", + columns: new[] { "workflow_id", "version_number" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflows_current_version_id", + schema: "werkr", + table: "workflows", + column: "current_version_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflows_parent_step_id", + schema: "werkr", + table: "workflows", + column: "parent_step_id" ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_file_monitor_triggers_trigger_versions_current_version_id", + schema: "werkr", + table: "file_monitor_triggers", + column: "current_version_id", + principalSchema: "werkr", + principalTable: "trigger_versions", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_file_monitor_triggers_workflow_versions_pinned_workflow_ver", + schema: "werkr", + table: "file_monitor_triggers", + column: "pinned_workflow_version_id", + principalSchema: "werkr", + principalTable: "workflow_versions", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_file_monitor_triggers_workflows_workflow_id", + schema: "werkr", + table: "file_monitor_triggers", + column: "workflow_id", + principalSchema: "werkr", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_jobs_tasks_task_id", + schema: "werkr", + table: "jobs", + column: "task_id", + principalSchema: "werkr", + principalTable: "tasks", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_jobs_workflow_runs_workflow_run_id", + schema: "werkr", + table: "jobs", + column: "workflow_run_id", + principalSchema: "werkr", + principalTable: "workflow_runs", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_jobs_workflow_steps_step_id", + schema: "werkr", + table: "jobs", + column: "step_id", + principalSchema: "werkr", + principalTable: "workflow_steps", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_notification_subscriptions_workflows_workflow_id", + schema: "werkr", + table: "notification_subscriptions", + column: "workflow_id", + principalSchema: "werkr", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_task_schedules_tasks_task_id", + schema: "werkr", + table: "task_schedules", + column: "task_id", + principalSchema: "werkr", + principalTable: "tasks", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_task_versions_tasks_task_id", + schema: "werkr", + table: "task_versions", + column: "task_id", + principalSchema: "werkr", + principalTable: "tasks", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_tasks_workflows_workflow_id", + schema: "werkr", + table: "tasks", + column: "workflow_id", + principalSchema: "werkr", + principalTable: "workflows", + principalColumn: "id" ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_run_variables_workflow_runs_workflow_run_id", + schema: "werkr", + table: "workflow_run_variables", + column: "workflow_run_id", + principalSchema: "werkr", + principalTable: "workflow_runs", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_run_variables_workflow_steps_produced_by_step_id", + schema: "werkr", + table: "workflow_run_variables", + column: "produced_by_step_id", + principalSchema: "werkr", + principalTable: "workflow_steps", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_runs_workflow_versions_workflow_version_id", + schema: "werkr", + table: "workflow_runs", + column: "workflow_version_id", + principalSchema: "werkr", + principalTable: "workflow_versions", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_runs_workflows_workflow_id", + schema: "werkr", + table: "workflow_runs", + column: "workflow_id", + principalSchema: "werkr", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_schedules_workflows_workflow_id", + schema: "werkr", + table: "workflow_schedules", + column: "workflow_id", + principalSchema: "werkr", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_step_dependencies_workflow_steps_depends_on_step_id", + schema: "werkr", + table: "workflow_step_dependencies", + column: "depends_on_step_id", + principalSchema: "werkr", + principalTable: "workflow_steps", + principalColumn: "id", + onDelete: ReferentialAction.Restrict ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_step_dependencies_workflow_steps_step_id", + schema: "werkr", + table: "workflow_step_dependencies", + column: "step_id", + principalSchema: "werkr", + principalTable: "workflow_steps", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_step_executions_workflow_steps_step_id", + schema: "werkr", + table: "workflow_step_executions", + column: "step_id", + principalSchema: "werkr", + principalTable: "workflow_steps", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_steps_workflows_child_workflow_id", + schema: "werkr", + table: "workflow_steps", + column: "child_workflow_id", + principalSchema: "werkr", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_steps_workflows_workflow_id", + schema: "werkr", + table: "workflow_steps", + column: "workflow_id", + principalSchema: "werkr", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_variables_workflows_workflow_id", + schema: "werkr", + table: "workflow_variables", + column: "workflow_id", + principalSchema: "werkr", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_versions_workflows_workflow_id", + schema: "werkr", + table: "workflow_versions", + column: "workflow_id", + principalSchema: "werkr", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } + + /// + protected override void Down( MigrationBuilder migrationBuilder ) { + _ = migrationBuilder.DropForeignKey( + name: "fk_workflow_steps_registered_connections_agent_connection_id_o", + schema: "werkr", + table: "workflow_steps" ); + + _ = migrationBuilder.DropForeignKey( + name: "fk_file_monitor_triggers_trigger_versions_current_version_id", + schema: "werkr", + table: "file_monitor_triggers" ); + + _ = migrationBuilder.DropForeignKey( + name: "fk_workflows_workflow_versions_current_version_id", + schema: "werkr", + table: "workflows" ); + + _ = migrationBuilder.DropForeignKey( + name: "fk_tasks_workflows_workflow_id", + schema: "werkr", + table: "tasks" ); + + _ = migrationBuilder.DropForeignKey( + name: "fk_workflow_steps_workflows_child_workflow_id", + schema: "werkr", + table: "workflow_steps" ); + + _ = migrationBuilder.DropForeignKey( + name: "fk_workflow_steps_workflows_workflow_id", + schema: "werkr", + table: "workflow_steps" ); + + _ = migrationBuilder.DropForeignKey( + name: "fk_task_versions_tasks_task_id", + schema: "werkr", + table: "task_versions" ); + + _ = migrationBuilder.DropTable( + name: "audit_events", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "configuration_change_logs", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "credential_agent_scopes", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "daily_recurrence", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "holiday_dates", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "monthly_recurrence", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "notification_deliveries", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "notification_subscriptions", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "notification_templates", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "pending_agent_notifications", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "registration_bundles", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "retention_policies", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "saved_filters", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "schedule_expiration", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "schedule_holiday_calendars", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "schedule_repeat_options", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "schedule_start_datetimeinfo", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "task_schedules", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "user_notification_preferences", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "user_notifications", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "user_preferences", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "weekly_recurrence", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "workflow_run_variables", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "workflow_schedules", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "workflow_step_dependencies", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "workflow_step_executions", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "workflow_variables", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "configuration_entries", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "credentials", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "holiday_rules", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "notification_channels", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "jobs", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "holiday_calendars", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "schedules", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "workflow_runs", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "registered_connections", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "trigger_versions", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "file_monitor_triggers", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "workflow_versions", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "workflows", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "workflow_steps", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "tasks", + schema: "werkr" ); + + _ = migrationBuilder.DropTable( + name: "task_versions", + schema: "werkr" ); + } +} diff --git a/src/Werkr.Data/Migrations/Postgres/PostgresWerkrDbContextModelSnapshot.cs b/src/Werkr.Data/Migrations/Postgres/PostgresWerkrDbContextModelSnapshot.cs index 70d6123..1631eb4 100644 --- a/src/Werkr.Data/Migrations/Postgres/PostgresWerkrDbContextModelSnapshot.cs +++ b/src/Werkr.Data/Migrations/Postgres/PostgresWerkrDbContextModelSnapshot.cs @@ -2865,6 +2865,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.HasOne("Werkr.Data.Entities.Workflows.WorkflowRun", "WorkflowRun") .WithMany("Jobs") .HasForeignKey("WorkflowRunId") + .OnDelete(DeleteBehavior.SetNull) .HasConstraintName("fk_jobs_workflow_runs_workflow_run_id"); b.Navigation("AgentConnection"); diff --git a/src/Werkr.Data/Migrations/Sqlite/20260323003652_Initial.cs b/src/Werkr.Data/Migrations/Sqlite/20260323003652_Initial.cs deleted file mode 100644 index e3565da..0000000 --- a/src/Werkr.Data/Migrations/Sqlite/20260323003652_Initial.cs +++ /dev/null @@ -1,1789 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Werkr.Data.Migrations.Sqlite -{ - /// - public partial class Initial : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "audit_events", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - event_type_id = table.Column(type: "TEXT", maxLength: 128, nullable: false), - event_category = table.Column(type: "TEXT", maxLength: 64, nullable: false), - source_module = table.Column(type: "TEXT", maxLength: 64, nullable: false), - actor_id = table.Column(type: "TEXT", maxLength: 128, nullable: true), - actor_type = table.Column(type: "TEXT", nullable: false), - entity_type = table.Column(type: "TEXT", maxLength: 64, nullable: true), - entity_id = table.Column(type: "TEXT", maxLength: 128, nullable: true), - action_performed = table.Column(type: "TEXT", maxLength: 64, nullable: false), - details = table.Column(type: "TEXT", maxLength: 8192, nullable: false), - timestamp_utc = table.Column(type: "TEXT", nullable: false), - correlation_id = table.Column(type: "TEXT", maxLength: 128, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_audit_events", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "configuration_entries", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - key = table.Column(type: "TEXT", maxLength: 256, nullable: false), - value = table.Column(type: "TEXT", nullable: false), - value_type = table.Column(type: "TEXT", maxLength: 32, nullable: false), - category = table.Column(type: "TEXT", maxLength: 64, nullable: false), - description = table.Column(type: "TEXT", maxLength: 500, nullable: true), - scope_level = table.Column(type: "INTEGER", nullable: false), - scope_id = table.Column(type: "TEXT", maxLength: 128, nullable: true), - sync_version = table.Column(type: "INTEGER", nullable: false), - validation_rules = table.Column(type: "TEXT", nullable: true), - default_value = table.Column(type: "TEXT", nullable: false), - created_utc = table.Column(type: "TEXT", nullable: false), - modified_utc = table.Column(type: "TEXT", nullable: false), - modified_by_user_id = table.Column(type: "TEXT", maxLength: 128, nullable: false), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_configuration_entries", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "credentials", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - name = table.Column(type: "TEXT", maxLength: 128, nullable: false), - type = table.Column(type: "TEXT", nullable: false), - encrypted_value = table.Column(type: "TEXT", nullable: false), - description = table.Column(type: "TEXT", maxLength: 500, nullable: true), - created_utc = table.Column(type: "TEXT", nullable: false), - modified_utc = table.Column(type: "TEXT", nullable: false), - created_by_user_id = table.Column(type: "TEXT", maxLength: 128, nullable: false), - modified_by_user_id = table.Column(type: "TEXT", maxLength: 128, nullable: false), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_credentials", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "holiday_calendars", - columns: table => new - { - id = table.Column(type: "TEXT", nullable: false), - name = table.Column(type: "TEXT", maxLength: 256, nullable: false), - description = table.Column(type: "TEXT", maxLength: 1024, nullable: false), - is_system_calendar = table.Column(type: "INTEGER", nullable: false), - created_utc = table.Column(type: "TEXT", nullable: false), - updated_utc = table.Column(type: "TEXT", nullable: false), - working_days = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_holiday_calendars", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "notification_channels", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - name = table.Column(type: "TEXT", maxLength: 128, nullable: false), - channel_type = table.Column(type: "TEXT", maxLength: 32, nullable: false), - configuration = table.Column(type: "TEXT", nullable: false), - is_enabled = table.Column(type: "INTEGER", nullable: false), - created_utc = table.Column(type: "TEXT", nullable: false), - modified_utc = table.Column(type: "TEXT", nullable: false), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_notification_channels", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "notification_templates", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - event_type_id = table.Column(type: "TEXT", maxLength: 128, nullable: false), - channel_type = table.Column(type: "TEXT", maxLength: 32, nullable: false), - subject = table.Column(type: "TEXT", maxLength: 500, nullable: true), - body = table.Column(type: "TEXT", maxLength: 8000, nullable: false), - is_default = table.Column(type: "INTEGER", nullable: false), - created_utc = table.Column(type: "TEXT", nullable: false), - modified_utc = table.Column(type: "TEXT", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_notification_templates", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "registered_connections", - columns: table => new - { - id = table.Column(type: "TEXT", nullable: false), - connection_name = table.Column(type: "TEXT", maxLength: 256, nullable: false), - remote_url = table.Column(type: "TEXT", maxLength: 2048, nullable: false), - local_public_key = table.Column(type: "TEXT", nullable: false), - local_private_key = table.Column(type: "TEXT", nullable: false), - remote_public_key = table.Column(type: "TEXT", nullable: false), - outbound_api_key = table.Column(type: "TEXT", maxLength: 512, nullable: false), - inbound_api_key_hash = table.Column(type: "TEXT", maxLength: 512, nullable: false), - shared_key = table.Column(type: "TEXT", nullable: false), - previous_shared_key = table.Column(type: "TEXT", nullable: true), - active_key_id = table.Column(type: "TEXT", maxLength: 128, nullable: true), - previous_key_id = table.Column(type: "TEXT", maxLength: 128, nullable: true), - key_rotated_at_utc = table.Column(type: "TEXT", nullable: true), - is_server = table.Column(type: "INTEGER", nullable: false), - status = table.Column(type: "TEXT", nullable: false), - last_seen = table.Column(type: "TEXT", nullable: true), - tags = table.Column(type: "TEXT", nullable: false), - allowed_paths = table.Column(type: "TEXT", nullable: false), - enforce_allowlist = table.Column(type: "INTEGER", nullable: false), - agent_version = table.Column(type: "TEXT", maxLength: 128, nullable: false), - pending_shared_key = table.Column(type: "TEXT", nullable: true), - pending_key_id = table.Column(type: "TEXT", maxLength: 128, nullable: true), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_registered_connections", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "registration_bundles", - columns: table => new - { - id = table.Column(type: "TEXT", nullable: false), - connection_name = table.Column(type: "TEXT", maxLength: 256, nullable: false), - server_public_key = table.Column(type: "TEXT", nullable: false), - server_private_key = table.Column(type: "TEXT", nullable: false), - bundle_id = table.Column(type: "TEXT", nullable: false), - status = table.Column(type: "TEXT", nullable: false), - expires_at = table.Column(type: "TEXT", nullable: false), - key_size = table.Column(type: "INTEGER", nullable: false), - tags = table.Column(type: "TEXT", nullable: false), - allowed_paths = table.Column(type: "TEXT", nullable: false), - registration_key = table.Column(type: "TEXT", nullable: true), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_registration_bundles", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "retention_policies", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - entity_type = table.Column(type: "TEXT", maxLength: 64, nullable: false), - retention_days = table.Column(type: "INTEGER", nullable: false), - is_enabled = table.Column(type: "INTEGER", nullable: false), - modified_utc = table.Column(type: "TEXT", nullable: false), - modified_by_user_id = table.Column(type: "TEXT", maxLength: 128, nullable: false), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_retention_policies", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "saved_filters", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - owner_id = table.Column(type: "TEXT", maxLength: 450, nullable: false), - page_key = table.Column(type: "TEXT", maxLength: 50, nullable: false), - name = table.Column(type: "TEXT", maxLength: 200, nullable: false), - criteria_json = table.Column(type: "TEXT", maxLength: 4096, nullable: false), - is_shared = table.Column(type: "INTEGER", nullable: false), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_saved_filters", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "schedules", - columns: table => new - { - id = table.Column(type: "TEXT", nullable: false), - name = table.Column(type: "TEXT", maxLength: 256, nullable: false), - stop_task_after_minutes = table.Column(type: "INTEGER", nullable: false), - catch_up_enabled = table.Column(type: "INTEGER", nullable: false), - shift_mode = table.Column(type: "INTEGER", nullable: false), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_schedules", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "user_notification_preferences", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - user_id = table.Column(type: "TEXT", maxLength: 128, nullable: false), - event_category_id = table.Column(type: "TEXT", maxLength: 64, nullable: false), - channel_type = table.Column(type: "TEXT", maxLength: 32, nullable: false), - is_enabled = table.Column(type: "INTEGER", nullable: false), - quiet_hours_start = table.Column(type: "TEXT", nullable: true), - quiet_hours_end = table.Column(type: "TEXT", nullable: true), - quiet_hours_timezone = table.Column(type: "TEXT", maxLength: 64, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_user_notification_preferences", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "user_notifications", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - user_id = table.Column(type: "TEXT", maxLength: 128, nullable: false), - event_type_id = table.Column(type: "TEXT", maxLength: 128, nullable: false), - event_category_id = table.Column(type: "TEXT", maxLength: 64, nullable: false), - title = table.Column(type: "TEXT", maxLength: 256, nullable: false), - body = table.Column(type: "TEXT", maxLength: 2000, nullable: false), - is_read = table.Column(type: "INTEGER", nullable: false), - created_utc = table.Column(type: "TEXT", nullable: false), - read_utc = table.Column(type: "TEXT", nullable: true), - link = table.Column(type: "TEXT", maxLength: 512, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_user_notifications", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "user_preferences", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - user_id = table.Column(type: "TEXT", maxLength: 450, nullable: false), - key = table.Column(type: "TEXT", maxLength: 100, nullable: false), - value = table.Column(type: "TEXT", maxLength: 500, nullable: false), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_user_preferences", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "configuration_change_logs", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - configuration_entry_id = table.Column(type: "INTEGER", nullable: false), - key = table.Column(type: "TEXT", maxLength: 256, nullable: false), - previous_value = table.Column(type: "TEXT", nullable: true), - new_value = table.Column(type: "TEXT", nullable: false), - changed_by_user_id = table.Column(type: "TEXT", maxLength: 128, nullable: false), - changed_utc = table.Column(type: "TEXT", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_configuration_change_logs", x => x.id); - table.ForeignKey( - name: "fk_configuration_change_logs_configuration_entries_configuration_entry_id", - column: x => x.configuration_entry_id, - principalTable: "configuration_entries", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "holiday_rules", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - holiday_calendar_id = table.Column(type: "TEXT", nullable: false), - name = table.Column(type: "TEXT", maxLength: 256, nullable: false), - rule_type = table.Column(type: "TEXT", nullable: false), - month = table.Column(type: "INTEGER", nullable: true), - day = table.Column(type: "INTEGER", nullable: true), - day_of_week = table.Column(type: "INTEGER", nullable: true), - week_number = table.Column(type: "INTEGER", nullable: true), - window_start = table.Column(type: "TEXT", nullable: true), - window_end = table.Column(type: "TEXT", nullable: true), - window_time_zone_id = table.Column(type: "TEXT", maxLength: 128, nullable: true), - observance_rule = table.Column(type: "TEXT", nullable: false), - year_start = table.Column(type: "INTEGER", nullable: true), - year_end = table.Column(type: "INTEGER", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_holiday_rules", x => x.id); - table.ForeignKey( - name: "fk_holiday_rules_holiday_calendars_holiday_calendar_id", - column: x => x.holiday_calendar_id, - principalTable: "holiday_calendars", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "notification_deliveries", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - channel_id = table.Column(type: "INTEGER", nullable: false), - event_type_id = table.Column(type: "TEXT", maxLength: 128, nullable: false), - recipient_id = table.Column(type: "TEXT", maxLength: 256, nullable: false), - status = table.Column(type: "INTEGER", nullable: false), - attempt_count = table.Column(type: "INTEGER", nullable: false), - max_attempts = table.Column(type: "INTEGER", nullable: false), - last_attempt_utc = table.Column(type: "TEXT", nullable: true), - next_retry_utc = table.Column(type: "TEXT", nullable: true), - error_message = table.Column(type: "TEXT", maxLength: 2000, nullable: true), - payload_json = table.Column(type: "TEXT", nullable: false), - created_utc = table.Column(type: "TEXT", nullable: false), - completed_utc = table.Column(type: "TEXT", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_notification_deliveries", x => x.id); - table.ForeignKey( - name: "fk_notification_deliveries_notification_channels_channel_id", - column: x => x.channel_id, - principalTable: "notification_channels", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "credential_agent_scopes", - columns: table => new - { - credential_id = table.Column(type: "INTEGER", nullable: false), - agent_connection_id = table.Column(type: "TEXT", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_credential_agent_scopes", x => new { x.credential_id, x.agent_connection_id }); - table.ForeignKey( - name: "fk_credential_agent_scopes_credentials_credential_id", - column: x => x.credential_id, - principalTable: "credentials", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_credential_agent_scopes_registered_connections_agent_connection_id", - column: x => x.agent_connection_id, - principalTable: "registered_connections", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "pending_agent_notifications", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - connection_id = table.Column(type: "TEXT", nullable: false), - channel = table.Column(type: "TEXT", maxLength: 64, nullable: false), - payload = table.Column(type: "TEXT", maxLength: 2000, nullable: true), - created_utc = table.Column(type: "TEXT", nullable: false), - expires_utc = table.Column(type: "TEXT", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_pending_agent_notifications", x => x.id); - table.ForeignKey( - name: "fk_pending_agent_notifications_registered_connections_connection_id", - column: x => x.connection_id, - principalTable: "registered_connections", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "daily_recurrence", - columns: table => new - { - schedule_id = table.Column(type: "TEXT", nullable: false), - day_interval = table.Column(type: "INTEGER", nullable: false), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_daily_recurrence", x => x.schedule_id); - table.ForeignKey( - name: "fk_daily_recurrence_schedules_schedule_id", - column: x => x.schedule_id, - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "monthly_recurrence", - columns: table => new - { - schedule_id = table.Column(type: "TEXT", nullable: false), - day_numbers = table.Column(type: "TEXT", nullable: true), - months_of_year = table.Column(type: "INTEGER", nullable: false), - week_number = table.Column(type: "INTEGER", nullable: true), - days_of_week = table.Column(type: "INTEGER", nullable: true), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_monthly_recurrence", x => x.schedule_id); - table.ForeignKey( - name: "fk_monthly_recurrence_schedules_schedule_id", - column: x => x.schedule_id, - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "schedule_expiration", - columns: table => new - { - schedule_id = table.Column(type: "TEXT", nullable: false), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false), - date = table.Column(type: "TEXT", nullable: false), - time = table.Column(type: "TEXT", nullable: false), - time_zone = table.Column(type: "TEXT", nullable: false), - is_fixed_offset = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_schedule_expiration", x => x.schedule_id); - table.ForeignKey( - name: "fk_schedule_expiration_schedules_schedule_id", - column: x => x.schedule_id, - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "schedule_holiday_calendars", - columns: table => new - { - schedule_id = table.Column(type: "TEXT", nullable: false), - holiday_calendar_id = table.Column(type: "TEXT", nullable: false), - mode = table.Column(type: "TEXT", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_schedule_holiday_calendars", x => new { x.schedule_id, x.holiday_calendar_id }); - table.ForeignKey( - name: "fk_schedule_holiday_calendars_holiday_calendars_holiday_calendar_id", - column: x => x.holiday_calendar_id, - principalTable: "holiday_calendars", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_schedule_holiday_calendars_schedules_schedule_id", - column: x => x.schedule_id, - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "schedule_repeat_options", - columns: table => new - { - schedule_id = table.Column(type: "TEXT", nullable: false), - repeat_interval_minutes = table.Column(type: "INTEGER", nullable: false), - repeat_duration_minutes = table.Column(type: "INTEGER", nullable: false), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_schedule_repeat_options", x => x.schedule_id); - table.ForeignKey( - name: "fk_schedule_repeat_options_schedules_schedule_id", - column: x => x.schedule_id, - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "schedule_start_datetimeinfo", - columns: table => new - { - schedule_id = table.Column(type: "TEXT", nullable: false), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false), - date = table.Column(type: "TEXT", nullable: false), - time = table.Column(type: "TEXT", nullable: false), - time_zone = table.Column(type: "TEXT", nullable: false), - is_fixed_offset = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_schedule_start_datetimeinfo", x => x.schedule_id); - table.ForeignKey( - name: "fk_schedule_start_datetimeinfo_schedules_schedule_id", - column: x => x.schedule_id, - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "weekly_recurrence", - columns: table => new - { - schedule_id = table.Column(type: "TEXT", nullable: false), - week_interval = table.Column(type: "INTEGER", nullable: false), - days_of_week = table.Column(type: "INTEGER", nullable: false), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_weekly_recurrence", x => x.schedule_id); - table.ForeignKey( - name: "fk_weekly_recurrence_schedules_schedule_id", - column: x => x.schedule_id, - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "holiday_dates", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - holiday_calendar_id = table.Column(type: "TEXT", nullable: false), - holiday_rule_id = table.Column(type: "INTEGER", nullable: true), - date = table.Column(type: "TEXT", nullable: false), - name = table.Column(type: "TEXT", maxLength: 256, nullable: false), - year = table.Column(type: "INTEGER", nullable: false), - window_start = table.Column(type: "TEXT", nullable: true), - window_end = table.Column(type: "TEXT", nullable: true), - window_time_zone_id = table.Column(type: "TEXT", maxLength: 128, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_holiday_dates", x => x.id); - table.ForeignKey( - name: "fk_holiday_dates_holiday_calendars_holiday_calendar_id", - column: x => x.holiday_calendar_id, - principalTable: "holiday_calendars", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_holiday_dates_holiday_rules_holiday_rule_id", - column: x => x.holiday_rule_id, - principalTable: "holiday_rules", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - }); - - migrationBuilder.CreateTable( - name: "file_monitor_triggers", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - workflow_id = table.Column(type: "INTEGER", nullable: false), - watch_directory = table.Column(type: "TEXT", maxLength: 500, nullable: false), - file_pattern = table.Column(type: "TEXT", maxLength: 200, nullable: false), - event_types = table.Column(type: "TEXT", nullable: false), - debounce_ms = table.Column(type: "INTEGER", nullable: false), - enabled = table.Column(type: "INTEGER", nullable: false), - target_tags = table.Column(type: "TEXT", nullable: true), - current_version_id = table.Column(type: "INTEGER", nullable: true), - version_binding_mode = table.Column(type: "TEXT", nullable: false), - pinned_workflow_version_id = table.Column(type: "INTEGER", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_file_monitor_triggers", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "trigger_versions", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - trigger_id = table.Column(type: "INTEGER", nullable: false), - version_number = table.Column(type: "INTEGER", nullable: false), - definition = table.Column(type: "TEXT", nullable: false), - created_by_user_id = table.Column(type: "TEXT", maxLength: 450, nullable: true), - change_description = table.Column(type: "TEXT", maxLength: 500, nullable: true), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_trigger_versions", x => x.id); - table.ForeignKey( - name: "fk_trigger_versions_file_monitor_triggers_trigger_id", - column: x => x.trigger_id, - principalTable: "file_monitor_triggers", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "jobs", - columns: table => new - { - id = table.Column(type: "TEXT", nullable: false), - task_id = table.Column(type: "INTEGER", nullable: false), - task_snapshot = table.Column(type: "TEXT", maxLength: 8000, nullable: false), - runtime_seconds = table.Column(type: "REAL", nullable: false), - start_time = table.Column(type: "TEXT", nullable: false), - end_time = table.Column(type: "TEXT", nullable: true), - success = table.Column(type: "INTEGER", nullable: false), - agent_connection_id = table.Column(type: "TEXT", nullable: true), - exit_code = table.Column(type: "INTEGER", nullable: true), - error_category = table.Column(type: "TEXT", nullable: false), - output = table.Column(type: "TEXT", maxLength: 2000, nullable: true), - output_path = table.Column(type: "TEXT", maxLength: 512, nullable: true), - workflow_run_id = table.Column(type: "TEXT", nullable: true), - schedule_id = table.Column(type: "TEXT", nullable: true), - step_id = table.Column(type: "INTEGER", nullable: true), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_jobs", x => x.id); - table.ForeignKey( - name: "fk_jobs_registered_connections_agent_connection_id", - column: x => x.agent_connection_id, - principalTable: "registered_connections", - principalColumn: "id"); - table.ForeignKey( - name: "fk_jobs_schedules_schedule_id", - column: x => x.schedule_id, - principalTable: "schedules", - principalColumn: "id"); - }); - - migrationBuilder.CreateTable( - name: "notification_subscriptions", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - subscription_type = table.Column(type: "INTEGER", nullable: false), - workflow_id = table.Column(type: "INTEGER", nullable: true), - tag = table.Column(type: "TEXT", maxLength: 128, nullable: true), - event_category_id = table.Column(type: "TEXT", maxLength: 64, nullable: false), - channel_id = table.Column(type: "INTEGER", nullable: false), - is_enabled = table.Column(type: "INTEGER", nullable: false), - created_by_user_id = table.Column(type: "TEXT", maxLength: 128, nullable: false), - created_utc = table.Column(type: "TEXT", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_notification_subscriptions", x => x.id); - table.ForeignKey( - name: "fk_notification_subscriptions_notification_channels_channel_id", - column: x => x.channel_id, - principalTable: "notification_channels", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "task_schedules", - columns: table => new - { - task_id = table.Column(type: "INTEGER", nullable: false), - schedule_id = table.Column(type: "TEXT", nullable: false), - created_at_utc = table.Column(type: "TEXT", nullable: false), - is_one_time = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_task_schedules", x => new { x.task_id, x.schedule_id }); - table.ForeignKey( - name: "fk_task_schedules_schedules_schedule_id", - column: x => x.schedule_id, - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "task_versions", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - task_id = table.Column(type: "INTEGER", nullable: false), - version_number = table.Column(type: "INTEGER", nullable: false), - definition = table.Column(type: "TEXT", nullable: false), - created_by_user_id = table.Column(type: "TEXT", maxLength: 450, nullable: true), - change_description = table.Column(type: "TEXT", maxLength: 500, nullable: true), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_task_versions", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "tasks", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - name = table.Column(type: "TEXT", maxLength: 256, nullable: false), - description = table.Column(type: "TEXT", maxLength: 2000, nullable: false), - action_type = table.Column(type: "TEXT", nullable: false), - workflow_id = table.Column(type: "INTEGER", nullable: true), - content = table.Column(type: "TEXT", maxLength: 8000, nullable: false), - arguments = table.Column(type: "TEXT", nullable: true), - target_tags = table.Column(type: "TEXT", nullable: false), - enabled = table.Column(type: "INTEGER", nullable: false), - is_ephemeral = table.Column(type: "INTEGER", nullable: false), - timeout_minutes = table.Column(type: "INTEGER", nullable: true), - sync_interval_minutes = table.Column(type: "INTEGER", nullable: false), - success_criteria = table.Column(type: "TEXT", maxLength: 500, nullable: true), - action_sub_type = table.Column(type: "TEXT", maxLength: 30, nullable: true), - action_parameters = table.Column(type: "TEXT", nullable: true), - current_version_id = table.Column(type: "INTEGER", nullable: true), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_tasks", x => x.id); - table.ForeignKey( - name: "fk_tasks_task_versions_current_version_id", - column: x => x.current_version_id, - principalTable: "task_versions", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - }); - - migrationBuilder.CreateTable( - name: "workflow_run_variables", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - workflow_run_id = table.Column(type: "TEXT", nullable: false), - variable_name = table.Column(type: "TEXT", maxLength: 128, nullable: false), - value = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false), - produced_by_step_id = table.Column(type: "INTEGER", nullable: true), - produced_by_job_id = table.Column(type: "TEXT", nullable: true), - source = table.Column(type: "TEXT", nullable: false), - created = table.Column(type: "TEXT", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_run_variables", x => x.id); - table.ForeignKey( - name: "fk_workflow_run_variables_jobs_produced_by_job_id", - column: x => x.produced_by_job_id, - principalTable: "jobs", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - }); - - migrationBuilder.CreateTable( - name: "workflow_runs", - columns: table => new - { - id = table.Column(type: "TEXT", nullable: false), - workflow_id = table.Column(type: "INTEGER", nullable: false), - start_time = table.Column(type: "TEXT", nullable: false), - end_time = table.Column(type: "TEXT", nullable: true), - status = table.Column(type: "TEXT", nullable: false), - workflow_version_id = table.Column(type: "INTEGER", nullable: true), - workflow_name_snapshot = table.Column(type: "TEXT", maxLength: 200, nullable: true), - workflow_version_snapshot = table.Column(type: "INTEGER", nullable: true), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_runs", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "workflow_schedules", - columns: table => new - { - workflow_id = table.Column(type: "INTEGER", nullable: false), - schedule_id = table.Column(type: "TEXT", nullable: false), - created_at_utc = table.Column(type: "TEXT", nullable: false), - is_one_time = table.Column(type: "INTEGER", nullable: false), - workflow_run_id = table.Column(type: "TEXT", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_schedules", x => new { x.workflow_id, x.schedule_id }); - table.ForeignKey( - name: "fk_workflow_schedules_schedules_schedule_id", - column: x => x.schedule_id, - principalTable: "schedules", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "workflow_step_dependencies", - columns: table => new - { - step_id = table.Column(type: "INTEGER", nullable: false), - depends_on_step_id = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_step_dependencies", x => new { x.step_id, x.depends_on_step_id }); - }); - - migrationBuilder.CreateTable( - name: "workflow_step_executions", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - workflow_run_id = table.Column(type: "TEXT", nullable: false), - step_id = table.Column(type: "INTEGER", nullable: false), - attempt = table.Column(type: "INTEGER", nullable: false), - status = table.Column(type: "TEXT", nullable: false), - start_time = table.Column(type: "TEXT", nullable: true), - end_time = table.Column(type: "TEXT", nullable: true), - job_id = table.Column(type: "TEXT", nullable: true), - error_message = table.Column(type: "TEXT", maxLength: 4000, nullable: true), - skip_reason = table.Column(type: "TEXT", maxLength: 2000, nullable: true), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_step_executions", x => x.id); - table.ForeignKey( - name: "fk_workflow_step_executions_jobs_job_id", - column: x => x.job_id, - principalTable: "jobs", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - table.ForeignKey( - name: "fk_workflow_step_executions_workflow_runs_workflow_run_id", - column: x => x.workflow_run_id, - principalTable: "workflow_runs", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "workflow_steps", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - workflow_id = table.Column(type: "INTEGER", nullable: false), - task_id = table.Column(type: "INTEGER", nullable: true), - order = table.Column(type: "INTEGER", nullable: false), - control_statement = table.Column(type: "TEXT", nullable: false), - condition_expression = table.Column(type: "TEXT", maxLength: 2000, nullable: true), - max_iterations = table.Column(type: "INTEGER", nullable: false), - agent_connection_id_override = table.Column(type: "TEXT", nullable: true), - dependency_mode = table.Column(type: "TEXT", nullable: false), - input_variable_name = table.Column(type: "TEXT", maxLength: 128, nullable: true), - output_variable_name = table.Column(type: "TEXT", maxLength: 128, nullable: true), - is_composite = table.Column(type: "INTEGER", nullable: false), - composite_type = table.Column(type: "TEXT", nullable: false), - child_workflow_id = table.Column(type: "INTEGER", nullable: true), - iteration_variable_name = table.Column(type: "TEXT", maxLength: 128, nullable: true), - collection_variable_name = table.Column(type: "TEXT", maxLength: 128, nullable: true), - task_version_id = table.Column(type: "INTEGER", nullable: true), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_steps", x => x.id); - table.ForeignKey( - name: "fk_workflow_steps_registered_connections_agent_connection_id_override", - column: x => x.agent_connection_id_override, - principalTable: "registered_connections", - principalColumn: "id"); - table.ForeignKey( - name: "fk_workflow_steps_task_versions_task_version_id", - column: x => x.task_version_id, - principalTable: "task_versions", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - table.ForeignKey( - name: "fk_workflow_steps_tasks_task_id", - column: x => x.task_id, - principalTable: "tasks", - principalColumn: "id"); - }); - - migrationBuilder.CreateTable( - name: "workflow_variables", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - workflow_id = table.Column(type: "INTEGER", nullable: false), - name = table.Column(type: "TEXT", maxLength: 128, nullable: false), - description = table.Column(type: "TEXT", maxLength: 500, nullable: true), - default_value = table.Column(type: "TEXT", nullable: true), - data_type = table.Column(type: "TEXT", maxLength: 32, nullable: true), - is_required = table.Column(type: "INTEGER", nullable: false), - log_redaction = table.Column(type: "INTEGER", nullable: false), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_variables", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "workflow_versions", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - workflow_id = table.Column(type: "INTEGER", nullable: false), - version_number = table.Column(type: "INTEGER", nullable: false), - definition = table.Column(type: "TEXT", nullable: false), - created_by_user_id = table.Column(type: "TEXT", maxLength: 450, nullable: true), - change_description = table.Column(type: "TEXT", maxLength: 500, nullable: true), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflow_versions", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "workflows", - columns: table => new - { - id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - name = table.Column(type: "TEXT", maxLength: 256, nullable: false), - description = table.Column(type: "TEXT", maxLength: 2000, nullable: false), - enabled = table.Column(type: "INTEGER", nullable: false), - target_tags = table.Column(type: "TEXT", nullable: true), - annotations = table.Column(type: "TEXT", nullable: true), - parent_step_id = table.Column(type: "INTEGER", nullable: true), - is_child_workflow = table.Column(type: "INTEGER", nullable: false), - current_version_id = table.Column(type: "INTEGER", nullable: true), - created = table.Column(type: "TEXT", nullable: false), - last_updated = table.Column(type: "TEXT", nullable: false), - version = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_workflows", x => x.id); - table.ForeignKey( - name: "fk_workflows_workflow_steps_parent_step_id", - column: x => x.parent_step_id, - principalTable: "workflow_steps", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - table.ForeignKey( - name: "fk_workflows_workflow_versions_current_version_id", - column: x => x.current_version_id, - principalTable: "workflow_versions", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - }); - - migrationBuilder.CreateIndex( - name: "ix_audit_events_actor_id", - table: "audit_events", - column: "actor_id"); - - migrationBuilder.CreateIndex( - name: "ix_audit_events_entity_type_entity_id", - table: "audit_events", - columns: new[] { "entity_type", "entity_id" }); - - migrationBuilder.CreateIndex( - name: "ix_audit_events_event_category", - table: "audit_events", - column: "event_category"); - - migrationBuilder.CreateIndex( - name: "ix_audit_events_event_type_id", - table: "audit_events", - column: "event_type_id"); - - migrationBuilder.CreateIndex( - name: "ix_audit_events_timestamp_utc", - table: "audit_events", - column: "timestamp_utc", - descending: new bool[0]); - - migrationBuilder.CreateIndex( - name: "ix_configuration_change_logs_configuration_entry_id", - table: "configuration_change_logs", - column: "configuration_entry_id"); - - migrationBuilder.CreateIndex( - name: "ix_configuration_entries_category", - table: "configuration_entries", - column: "category"); - - migrationBuilder.CreateIndex( - name: "ix_configuration_entries_key_scope_level_scope_id", - table: "configuration_entries", - columns: new[] { "key", "scope_level", "scope_id" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_configuration_entries_scope_id", - table: "configuration_entries", - column: "scope_id"); - - migrationBuilder.CreateIndex( - name: "ix_configuration_entries_sync_version", - table: "configuration_entries", - column: "sync_version"); - - migrationBuilder.CreateIndex( - name: "ix_credential_agent_scopes_agent_connection_id", - table: "credential_agent_scopes", - column: "agent_connection_id"); - - migrationBuilder.CreateIndex( - name: "ix_credentials_name", - table: "credentials", - column: "name", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_file_monitor_triggers_current_version_id", - table: "file_monitor_triggers", - column: "current_version_id"); - - migrationBuilder.CreateIndex( - name: "ix_file_monitor_triggers_pinned_workflow_version_id", - table: "file_monitor_triggers", - column: "pinned_workflow_version_id"); - - migrationBuilder.CreateIndex( - name: "ix_file_monitor_triggers_workflow_id", - table: "file_monitor_triggers", - column: "workflow_id"); - - migrationBuilder.CreateIndex( - name: "ix_holiday_calendars_name", - table: "holiday_calendars", - column: "name", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_holiday_dates_holiday_calendar_id_date", - table: "holiday_dates", - columns: new[] { "holiday_calendar_id", "date" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_holiday_dates_holiday_rule_id", - table: "holiday_dates", - column: "holiday_rule_id"); - - migrationBuilder.CreateIndex( - name: "ix_holiday_rules_holiday_calendar_id", - table: "holiday_rules", - column: "holiday_calendar_id"); - - migrationBuilder.CreateIndex( - name: "ix_jobs_agent_connection_id", - table: "jobs", - column: "agent_connection_id"); - - migrationBuilder.CreateIndex( - name: "ix_jobs_schedule_id", - table: "jobs", - column: "schedule_id"); - - migrationBuilder.CreateIndex( - name: "ix_jobs_step_id", - table: "jobs", - column: "step_id"); - - migrationBuilder.CreateIndex( - name: "ix_jobs_task_id", - table: "jobs", - column: "task_id"); - - migrationBuilder.CreateIndex( - name: "IX_jobs_WorkflowRunId_StepId", - table: "jobs", - columns: new[] { "workflow_run_id", "step_id" }); - - migrationBuilder.CreateIndex( - name: "ix_notification_channels_name", - table: "notification_channels", - column: "name", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_notification_deliveries_channel_id", - table: "notification_deliveries", - column: "channel_id"); - - migrationBuilder.CreateIndex( - name: "ix_notification_deliveries_status_next_retry_utc", - table: "notification_deliveries", - columns: new[] { "status", "next_retry_utc" }); - - migrationBuilder.CreateIndex( - name: "ix_notification_subscriptions_channel_id", - table: "notification_subscriptions", - column: "channel_id"); - - migrationBuilder.CreateIndex( - name: "ix_notification_subscriptions_event_category_id", - table: "notification_subscriptions", - column: "event_category_id"); - - migrationBuilder.CreateIndex( - name: "ix_notification_subscriptions_tag", - table: "notification_subscriptions", - column: "tag"); - - migrationBuilder.CreateIndex( - name: "ix_notification_subscriptions_workflow_id", - table: "notification_subscriptions", - column: "workflow_id"); - - migrationBuilder.CreateIndex( - name: "ix_notification_templates_event_type_id_channel_type", - table: "notification_templates", - columns: new[] { "event_type_id", "channel_type" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_pending_agent_notifications_connection_id_created_utc", - table: "pending_agent_notifications", - columns: new[] { "connection_id", "created_utc" }); - - migrationBuilder.CreateIndex( - name: "ix_registered_connections_connection_name", - table: "registered_connections", - column: "connection_name"); - - migrationBuilder.CreateIndex( - name: "ix_registered_connections_remote_url", - table: "registered_connections", - column: "remote_url"); - - migrationBuilder.CreateIndex( - name: "ix_registration_bundles_bundle_id", - table: "registration_bundles", - column: "bundle_id", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_retention_policies_entity_type", - table: "retention_policies", - column: "entity_type", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_saved_filters_page_key_is_shared", - table: "saved_filters", - columns: new[] { "page_key", "is_shared" }); - - migrationBuilder.CreateIndex( - name: "ix_saved_filters_page_key_owner_id", - table: "saved_filters", - columns: new[] { "page_key", "owner_id" }); - - migrationBuilder.CreateIndex( - name: "ix_schedule_holiday_calendars_holiday_calendar_id", - table: "schedule_holiday_calendars", - column: "holiday_calendar_id"); - - migrationBuilder.CreateIndex( - name: "ix_schedule_holiday_calendars_schedule_id", - table: "schedule_holiday_calendars", - column: "schedule_id", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_task_schedules_schedule_id", - table: "task_schedules", - column: "schedule_id"); - - migrationBuilder.CreateIndex( - name: "ix_task_versions_task_id", - table: "task_versions", - column: "task_id"); - - migrationBuilder.CreateIndex( - name: "ix_task_versions_task_id_version_number", - table: "task_versions", - columns: new[] { "task_id", "version_number" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_tasks_current_version_id", - table: "tasks", - column: "current_version_id"); - - migrationBuilder.CreateIndex( - name: "ix_tasks_workflow_id", - table: "tasks", - column: "workflow_id"); - - migrationBuilder.CreateIndex( - name: "ix_trigger_versions_trigger_id", - table: "trigger_versions", - column: "trigger_id"); - - migrationBuilder.CreateIndex( - name: "ix_trigger_versions_trigger_id_version_number", - table: "trigger_versions", - columns: new[] { "trigger_id", "version_number" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_user_notification_preferences_user_id_event_category_id", - table: "user_notification_preferences", - columns: new[] { "user_id", "event_category_id" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_user_notifications_user_id_is_read_created_utc", - table: "user_notifications", - columns: new[] { "user_id", "is_read", "created_utc" }, - descending: new[] { false, false, true }); - - migrationBuilder.CreateIndex( - name: "ix_user_preferences_user_id_key", - table: "user_preferences", - columns: new[] { "user_id", "key" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_workflow_run_variables_produced_by_job_id", - table: "workflow_run_variables", - column: "produced_by_job_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_run_variables_produced_by_step_id", - table: "workflow_run_variables", - column: "produced_by_step_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_run_variables_workflow_run_id_variable_name_version", - table: "workflow_run_variables", - columns: new[] { "workflow_run_id", "variable_name", "version" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_workflow_runs_workflow_id", - table: "workflow_runs", - column: "workflow_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_runs_workflow_version_id", - table: "workflow_runs", - column: "workflow_version_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_schedules_schedule_id", - table: "workflow_schedules", - column: "schedule_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_step_dependencies_depends_on_step_id", - table: "workflow_step_dependencies", - column: "depends_on_step_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_step_executions_job_id", - table: "workflow_step_executions", - column: "job_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_step_executions_step_id", - table: "workflow_step_executions", - column: "step_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_step_executions_workflow_run_id", - table: "workflow_step_executions", - column: "workflow_run_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_step_executions_workflow_run_id_step_id_attempt", - table: "workflow_step_executions", - columns: new[] { "workflow_run_id", "step_id", "attempt" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_workflow_steps_agent_connection_id_override", - table: "workflow_steps", - column: "agent_connection_id_override"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_steps_child_workflow_id", - table: "workflow_steps", - column: "child_workflow_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_steps_task_id", - table: "workflow_steps", - column: "task_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_steps_task_version_id", - table: "workflow_steps", - column: "task_version_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_steps_workflow_id", - table: "workflow_steps", - column: "workflow_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_variables_workflow_id_name", - table: "workflow_variables", - columns: new[] { "workflow_id", "name" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_workflow_versions_workflow_id", - table: "workflow_versions", - column: "workflow_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflow_versions_workflow_id_version_number", - table: "workflow_versions", - columns: new[] { "workflow_id", "version_number" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_workflows_current_version_id", - table: "workflows", - column: "current_version_id"); - - migrationBuilder.CreateIndex( - name: "ix_workflows_parent_step_id", - table: "workflows", - column: "parent_step_id"); - - migrationBuilder.AddForeignKey( - name: "fk_file_monitor_triggers_trigger_versions_current_version_id", - table: "file_monitor_triggers", - column: "current_version_id", - principalTable: "trigger_versions", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "fk_file_monitor_triggers_workflow_versions_pinned_workflow_version_id", - table: "file_monitor_triggers", - column: "pinned_workflow_version_id", - principalTable: "workflow_versions", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "fk_file_monitor_triggers_workflows_workflow_id", - table: "file_monitor_triggers", - column: "workflow_id", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_jobs_tasks_task_id", - table: "jobs", - column: "task_id", - principalTable: "tasks", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_jobs_workflow_runs_workflow_run_id", - table: "jobs", - column: "workflow_run_id", - principalTable: "workflow_runs", - principalColumn: "id"); - - migrationBuilder.AddForeignKey( - name: "fk_jobs_workflow_steps_step_id", - table: "jobs", - column: "step_id", - principalTable: "workflow_steps", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "fk_notification_subscriptions_workflows_workflow_id", - table: "notification_subscriptions", - column: "workflow_id", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_task_schedules_tasks_task_id", - table: "task_schedules", - column: "task_id", - principalTable: "tasks", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_task_versions_tasks_task_id", - table: "task_versions", - column: "task_id", - principalTable: "tasks", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_tasks_workflows_workflow_id", - table: "tasks", - column: "workflow_id", - principalTable: "workflows", - principalColumn: "id"); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_run_variables_workflow_runs_workflow_run_id", - table: "workflow_run_variables", - column: "workflow_run_id", - principalTable: "workflow_runs", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_run_variables_workflow_steps_produced_by_step_id", - table: "workflow_run_variables", - column: "produced_by_step_id", - principalTable: "workflow_steps", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_runs_workflow_versions_workflow_version_id", - table: "workflow_runs", - column: "workflow_version_id", - principalTable: "workflow_versions", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_runs_workflows_workflow_id", - table: "workflow_runs", - column: "workflow_id", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_schedules_workflows_workflow_id", - table: "workflow_schedules", - column: "workflow_id", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_step_dependencies_workflow_steps_depends_on_step_id", - table: "workflow_step_dependencies", - column: "depends_on_step_id", - principalTable: "workflow_steps", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_step_dependencies_workflow_steps_step_id", - table: "workflow_step_dependencies", - column: "step_id", - principalTable: "workflow_steps", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_step_executions_workflow_steps_step_id", - table: "workflow_step_executions", - column: "step_id", - principalTable: "workflow_steps", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_steps_workflows_child_workflow_id", - table: "workflow_steps", - column: "child_workflow_id", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_steps_workflows_workflow_id", - table: "workflow_steps", - column: "workflow_id", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_variables_workflows_workflow_id", - table: "workflow_variables", - column: "workflow_id", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "fk_workflow_versions_workflows_workflow_id", - table: "workflow_versions", - column: "workflow_id", - principalTable: "workflows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "fk_workflow_steps_registered_connections_agent_connection_id_override", - table: "workflow_steps"); - - migrationBuilder.DropForeignKey( - name: "fk_file_monitor_triggers_trigger_versions_current_version_id", - table: "file_monitor_triggers"); - - migrationBuilder.DropForeignKey( - name: "fk_workflows_workflow_versions_current_version_id", - table: "workflows"); - - migrationBuilder.DropForeignKey( - name: "fk_tasks_workflows_workflow_id", - table: "tasks"); - - migrationBuilder.DropForeignKey( - name: "fk_workflow_steps_workflows_child_workflow_id", - table: "workflow_steps"); - - migrationBuilder.DropForeignKey( - name: "fk_workflow_steps_workflows_workflow_id", - table: "workflow_steps"); - - migrationBuilder.DropForeignKey( - name: "fk_task_versions_tasks_task_id", - table: "task_versions"); - - migrationBuilder.DropTable( - name: "audit_events"); - - migrationBuilder.DropTable( - name: "configuration_change_logs"); - - migrationBuilder.DropTable( - name: "credential_agent_scopes"); - - migrationBuilder.DropTable( - name: "daily_recurrence"); - - migrationBuilder.DropTable( - name: "holiday_dates"); - - migrationBuilder.DropTable( - name: "monthly_recurrence"); - - migrationBuilder.DropTable( - name: "notification_deliveries"); - - migrationBuilder.DropTable( - name: "notification_subscriptions"); - - migrationBuilder.DropTable( - name: "notification_templates"); - - migrationBuilder.DropTable( - name: "pending_agent_notifications"); - - migrationBuilder.DropTable( - name: "registration_bundles"); - - migrationBuilder.DropTable( - name: "retention_policies"); - - migrationBuilder.DropTable( - name: "saved_filters"); - - migrationBuilder.DropTable( - name: "schedule_expiration"); - - migrationBuilder.DropTable( - name: "schedule_holiday_calendars"); - - migrationBuilder.DropTable( - name: "schedule_repeat_options"); - - migrationBuilder.DropTable( - name: "schedule_start_datetimeinfo"); - - migrationBuilder.DropTable( - name: "task_schedules"); - - migrationBuilder.DropTable( - name: "user_notification_preferences"); - - migrationBuilder.DropTable( - name: "user_notifications"); - - migrationBuilder.DropTable( - name: "user_preferences"); - - migrationBuilder.DropTable( - name: "weekly_recurrence"); - - migrationBuilder.DropTable( - name: "workflow_run_variables"); - - migrationBuilder.DropTable( - name: "workflow_schedules"); - - migrationBuilder.DropTable( - name: "workflow_step_dependencies"); - - migrationBuilder.DropTable( - name: "workflow_step_executions"); - - migrationBuilder.DropTable( - name: "workflow_variables"); - - migrationBuilder.DropTable( - name: "configuration_entries"); - - migrationBuilder.DropTable( - name: "credentials"); - - migrationBuilder.DropTable( - name: "holiday_rules"); - - migrationBuilder.DropTable( - name: "notification_channels"); - - migrationBuilder.DropTable( - name: "jobs"); - - migrationBuilder.DropTable( - name: "holiday_calendars"); - - migrationBuilder.DropTable( - name: "schedules"); - - migrationBuilder.DropTable( - name: "workflow_runs"); - - migrationBuilder.DropTable( - name: "registered_connections"); - - migrationBuilder.DropTable( - name: "trigger_versions"); - - migrationBuilder.DropTable( - name: "file_monitor_triggers"); - - migrationBuilder.DropTable( - name: "workflow_versions"); - - migrationBuilder.DropTable( - name: "workflows"); - - migrationBuilder.DropTable( - name: "workflow_steps"); - - migrationBuilder.DropTable( - name: "tasks"); - - migrationBuilder.DropTable( - name: "task_versions"); - } - } -} diff --git a/src/Werkr.Data/Migrations/Sqlite/20260323003652_Initial.Designer.cs b/src/Werkr.Data/Migrations/Sqlite/20260329063451_Initial.Designer.cs similarity index 99% rename from src/Werkr.Data/Migrations/Sqlite/20260323003652_Initial.Designer.cs rename to src/Werkr.Data/Migrations/Sqlite/20260329063451_Initial.Designer.cs index 4ffee08..35065e2 100644 --- a/src/Werkr.Data/Migrations/Sqlite/20260323003652_Initial.Designer.cs +++ b/src/Werkr.Data/Migrations/Sqlite/20260329063451_Initial.Designer.cs @@ -11,7 +11,7 @@ namespace Werkr.Data.Migrations.Sqlite { [DbContext(typeof(SqliteWerkrDbContext))] - [Migration("20260323003652_Initial")] + [Migration("20260329063451_Initial")] partial class Initial { /// @@ -2810,6 +2810,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.HasOne("Werkr.Data.Entities.Workflows.WorkflowRun", "WorkflowRun") .WithMany("Jobs") .HasForeignKey("WorkflowRunId") + .OnDelete(DeleteBehavior.SetNull) .HasConstraintName("fk_jobs_workflow_runs_workflow_run_id"); b.Navigation("AgentConnection"); diff --git a/src/Werkr.Data/Migrations/Sqlite/20260329063451_Initial.cs b/src/Werkr.Data/Migrations/Sqlite/20260329063451_Initial.cs new file mode 100644 index 0000000..7a96926 --- /dev/null +++ b/src/Werkr.Data/Migrations/Sqlite/20260329063451_Initial.cs @@ -0,0 +1,1699 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Werkr.Data.Migrations.Sqlite; +/// +public partial class Initial : Migration { + /// + protected override void Up( MigrationBuilder migrationBuilder ) { + _ = migrationBuilder.CreateTable( + name: "audit_events", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + event_type_id = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + event_category = table.Column( type: "TEXT", maxLength: 64, nullable: false ), + source_module = table.Column( type: "TEXT", maxLength: 64, nullable: false ), + actor_id = table.Column( type: "TEXT", maxLength: 128, nullable: true ), + actor_type = table.Column( type: "TEXT", nullable: false ), + entity_type = table.Column( type: "TEXT", maxLength: 64, nullable: true ), + entity_id = table.Column( type: "TEXT", maxLength: 128, nullable: true ), + action_performed = table.Column( type: "TEXT", maxLength: 64, nullable: false ), + details = table.Column( type: "TEXT", maxLength: 8192, nullable: false ), + timestamp_utc = table.Column( type: "TEXT", nullable: false ), + correlation_id = table.Column( type: "TEXT", maxLength: 128, nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_audit_events", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "configuration_entries", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + key = table.Column( type: "TEXT", maxLength: 256, nullable: false ), + value = table.Column( type: "TEXT", nullable: false ), + value_type = table.Column( type: "TEXT", maxLength: 32, nullable: false ), + category = table.Column( type: "TEXT", maxLength: 64, nullable: false ), + description = table.Column( type: "TEXT", maxLength: 500, nullable: true ), + scope_level = table.Column( type: "INTEGER", nullable: false ), + scope_id = table.Column( type: "TEXT", maxLength: 128, nullable: true ), + sync_version = table.Column( type: "INTEGER", nullable: false ), + validation_rules = table.Column( type: "TEXT", nullable: true ), + default_value = table.Column( type: "TEXT", nullable: false ), + created_utc = table.Column( type: "TEXT", nullable: false ), + modified_utc = table.Column( type: "TEXT", nullable: false ), + modified_by_user_id = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_configuration_entries", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "credentials", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + name = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + type = table.Column( type: "TEXT", nullable: false ), + encrypted_value = table.Column( type: "TEXT", nullable: false ), + description = table.Column( type: "TEXT", maxLength: 500, nullable: true ), + created_utc = table.Column( type: "TEXT", nullable: false ), + modified_utc = table.Column( type: "TEXT", nullable: false ), + created_by_user_id = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + modified_by_user_id = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_credentials", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "holiday_calendars", + columns: table => new { + id = table.Column( type: "TEXT", nullable: false ), + name = table.Column( type: "TEXT", maxLength: 256, nullable: false ), + description = table.Column( type: "TEXT", maxLength: 1024, nullable: false ), + is_system_calendar = table.Column( type: "INTEGER", nullable: false ), + created_utc = table.Column( type: "TEXT", nullable: false ), + updated_utc = table.Column( type: "TEXT", nullable: false ), + working_days = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_holiday_calendars", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "notification_channels", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + name = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + channel_type = table.Column( type: "TEXT", maxLength: 32, nullable: false ), + configuration = table.Column( type: "TEXT", nullable: false ), + is_enabled = table.Column( type: "INTEGER", nullable: false ), + created_utc = table.Column( type: "TEXT", nullable: false ), + modified_utc = table.Column( type: "TEXT", nullable: false ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_notification_channels", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "notification_templates", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + event_type_id = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + channel_type = table.Column( type: "TEXT", maxLength: 32, nullable: false ), + subject = table.Column( type: "TEXT", maxLength: 500, nullable: true ), + body = table.Column( type: "TEXT", maxLength: 8000, nullable: false ), + is_default = table.Column( type: "INTEGER", nullable: false ), + created_utc = table.Column( type: "TEXT", nullable: false ), + modified_utc = table.Column( type: "TEXT", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_notification_templates", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "registered_connections", + columns: table => new { + id = table.Column( type: "TEXT", nullable: false ), + connection_name = table.Column( type: "TEXT", maxLength: 256, nullable: false ), + remote_url = table.Column( type: "TEXT", maxLength: 2048, nullable: false ), + local_public_key = table.Column( type: "TEXT", nullable: false ), + local_private_key = table.Column( type: "TEXT", nullable: false ), + remote_public_key = table.Column( type: "TEXT", nullable: false ), + outbound_api_key = table.Column( type: "TEXT", maxLength: 512, nullable: false ), + inbound_api_key_hash = table.Column( type: "TEXT", maxLength: 512, nullable: false ), + shared_key = table.Column( type: "TEXT", nullable: false ), + previous_shared_key = table.Column( type: "TEXT", nullable: true ), + active_key_id = table.Column( type: "TEXT", maxLength: 128, nullable: true ), + previous_key_id = table.Column( type: "TEXT", maxLength: 128, nullable: true ), + key_rotated_at_utc = table.Column( type: "TEXT", nullable: true ), + is_server = table.Column( type: "INTEGER", nullable: false ), + status = table.Column( type: "TEXT", nullable: false ), + last_seen = table.Column( type: "TEXT", nullable: true ), + tags = table.Column( type: "TEXT", nullable: false ), + allowed_paths = table.Column( type: "TEXT", nullable: false ), + enforce_allowlist = table.Column( type: "INTEGER", nullable: false ), + agent_version = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + pending_shared_key = table.Column( type: "TEXT", nullable: true ), + pending_key_id = table.Column( type: "TEXT", maxLength: 128, nullable: true ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_registered_connections", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "registration_bundles", + columns: table => new { + id = table.Column( type: "TEXT", nullable: false ), + connection_name = table.Column( type: "TEXT", maxLength: 256, nullable: false ), + server_public_key = table.Column( type: "TEXT", nullable: false ), + server_private_key = table.Column( type: "TEXT", nullable: false ), + bundle_id = table.Column( type: "TEXT", nullable: false ), + status = table.Column( type: "TEXT", nullable: false ), + expires_at = table.Column( type: "TEXT", nullable: false ), + key_size = table.Column( type: "INTEGER", nullable: false ), + tags = table.Column( type: "TEXT", nullable: false ), + allowed_paths = table.Column( type: "TEXT", nullable: false ), + registration_key = table.Column( type: "TEXT", nullable: true ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_registration_bundles", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "retention_policies", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + entity_type = table.Column( type: "TEXT", maxLength: 64, nullable: false ), + retention_days = table.Column( type: "INTEGER", nullable: false ), + is_enabled = table.Column( type: "INTEGER", nullable: false ), + modified_utc = table.Column( type: "TEXT", nullable: false ), + modified_by_user_id = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_retention_policies", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "saved_filters", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + owner_id = table.Column( type: "TEXT", maxLength: 450, nullable: false ), + page_key = table.Column( type: "TEXT", maxLength: 50, nullable: false ), + name = table.Column( type: "TEXT", maxLength: 200, nullable: false ), + criteria_json = table.Column( type: "TEXT", maxLength: 4096, nullable: false ), + is_shared = table.Column( type: "INTEGER", nullable: false ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_saved_filters", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "schedules", + columns: table => new { + id = table.Column( type: "TEXT", nullable: false ), + name = table.Column( type: "TEXT", maxLength: 256, nullable: false ), + stop_task_after_minutes = table.Column( type: "INTEGER", nullable: false ), + catch_up_enabled = table.Column( type: "INTEGER", nullable: false ), + shift_mode = table.Column( type: "INTEGER", nullable: false ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_schedules", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "user_notification_preferences", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + user_id = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + event_category_id = table.Column( type: "TEXT", maxLength: 64, nullable: false ), + channel_type = table.Column( type: "TEXT", maxLength: 32, nullable: false ), + is_enabled = table.Column( type: "INTEGER", nullable: false ), + quiet_hours_start = table.Column( type: "TEXT", nullable: true ), + quiet_hours_end = table.Column( type: "TEXT", nullable: true ), + quiet_hours_timezone = table.Column( type: "TEXT", maxLength: 64, nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_user_notification_preferences", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "user_notifications", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + user_id = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + event_type_id = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + event_category_id = table.Column( type: "TEXT", maxLength: 64, nullable: false ), + title = table.Column( type: "TEXT", maxLength: 256, nullable: false ), + body = table.Column( type: "TEXT", maxLength: 2000, nullable: false ), + is_read = table.Column( type: "INTEGER", nullable: false ), + created_utc = table.Column( type: "TEXT", nullable: false ), + read_utc = table.Column( type: "TEXT", nullable: true ), + link = table.Column( type: "TEXT", maxLength: 512, nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_user_notifications", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "user_preferences", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + user_id = table.Column( type: "TEXT", maxLength: 450, nullable: false ), + key = table.Column( type: "TEXT", maxLength: 100, nullable: false ), + value = table.Column( type: "TEXT", maxLength: 500, nullable: false ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_user_preferences", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "configuration_change_logs", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + configuration_entry_id = table.Column( type: "INTEGER", nullable: false ), + key = table.Column( type: "TEXT", maxLength: 256, nullable: false ), + previous_value = table.Column( type: "TEXT", nullable: true ), + new_value = table.Column( type: "TEXT", nullable: false ), + changed_by_user_id = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + changed_utc = table.Column( type: "TEXT", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_configuration_change_logs", x => x.id ); + _ = table.ForeignKey( + name: "fk_configuration_change_logs_configuration_entries_configuration_entry_id", + column: x => x.configuration_entry_id, + principalTable: "configuration_entries", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "holiday_rules", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + holiday_calendar_id = table.Column( type: "TEXT", nullable: false ), + name = table.Column( type: "TEXT", maxLength: 256, nullable: false ), + rule_type = table.Column( type: "TEXT", nullable: false ), + month = table.Column( type: "INTEGER", nullable: true ), + day = table.Column( type: "INTEGER", nullable: true ), + day_of_week = table.Column( type: "INTEGER", nullable: true ), + week_number = table.Column( type: "INTEGER", nullable: true ), + window_start = table.Column( type: "TEXT", nullable: true ), + window_end = table.Column( type: "TEXT", nullable: true ), + window_time_zone_id = table.Column( type: "TEXT", maxLength: 128, nullable: true ), + observance_rule = table.Column( type: "TEXT", nullable: false ), + year_start = table.Column( type: "INTEGER", nullable: true ), + year_end = table.Column( type: "INTEGER", nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_holiday_rules", x => x.id ); + _ = table.ForeignKey( + name: "fk_holiday_rules_holiday_calendars_holiday_calendar_id", + column: x => x.holiday_calendar_id, + principalTable: "holiday_calendars", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "notification_deliveries", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + channel_id = table.Column( type: "INTEGER", nullable: false ), + event_type_id = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + recipient_id = table.Column( type: "TEXT", maxLength: 256, nullable: false ), + status = table.Column( type: "INTEGER", nullable: false ), + attempt_count = table.Column( type: "INTEGER", nullable: false ), + max_attempts = table.Column( type: "INTEGER", nullable: false ), + last_attempt_utc = table.Column( type: "TEXT", nullable: true ), + next_retry_utc = table.Column( type: "TEXT", nullable: true ), + error_message = table.Column( type: "TEXT", maxLength: 2000, nullable: true ), + payload_json = table.Column( type: "TEXT", nullable: false ), + created_utc = table.Column( type: "TEXT", nullable: false ), + completed_utc = table.Column( type: "TEXT", nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_notification_deliveries", x => x.id ); + _ = table.ForeignKey( + name: "fk_notification_deliveries_notification_channels_channel_id", + column: x => x.channel_id, + principalTable: "notification_channels", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "credential_agent_scopes", + columns: table => new { + credential_id = table.Column( type: "INTEGER", nullable: false ), + agent_connection_id = table.Column( type: "TEXT", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_credential_agent_scopes", x => new { x.credential_id, x.agent_connection_id } ); + _ = table.ForeignKey( + name: "fk_credential_agent_scopes_credentials_credential_id", + column: x => x.credential_id, + principalTable: "credentials", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + _ = table.ForeignKey( + name: "fk_credential_agent_scopes_registered_connections_agent_connection_id", + column: x => x.agent_connection_id, + principalTable: "registered_connections", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "pending_agent_notifications", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + connection_id = table.Column( type: "TEXT", nullable: false ), + channel = table.Column( type: "TEXT", maxLength: 64, nullable: false ), + payload = table.Column( type: "TEXT", maxLength: 2000, nullable: true ), + created_utc = table.Column( type: "TEXT", nullable: false ), + expires_utc = table.Column( type: "TEXT", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_pending_agent_notifications", x => x.id ); + _ = table.ForeignKey( + name: "fk_pending_agent_notifications_registered_connections_connection_id", + column: x => x.connection_id, + principalTable: "registered_connections", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "daily_recurrence", + columns: table => new { + schedule_id = table.Column( type: "TEXT", nullable: false ), + day_interval = table.Column( type: "INTEGER", nullable: false ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_daily_recurrence", x => x.schedule_id ); + _ = table.ForeignKey( + name: "fk_daily_recurrence_schedules_schedule_id", + column: x => x.schedule_id, + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "monthly_recurrence", + columns: table => new { + schedule_id = table.Column( type: "TEXT", nullable: false ), + day_numbers = table.Column( type: "TEXT", nullable: true ), + months_of_year = table.Column( type: "INTEGER", nullable: false ), + week_number = table.Column( type: "INTEGER", nullable: true ), + days_of_week = table.Column( type: "INTEGER", nullable: true ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_monthly_recurrence", x => x.schedule_id ); + _ = table.ForeignKey( + name: "fk_monthly_recurrence_schedules_schedule_id", + column: x => x.schedule_id, + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "schedule_expiration", + columns: table => new { + schedule_id = table.Column( type: "TEXT", nullable: false ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ), + date = table.Column( type: "TEXT", nullable: false ), + time = table.Column( type: "TEXT", nullable: false ), + time_zone = table.Column( type: "TEXT", nullable: false ), + is_fixed_offset = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_schedule_expiration", x => x.schedule_id ); + _ = table.ForeignKey( + name: "fk_schedule_expiration_schedules_schedule_id", + column: x => x.schedule_id, + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "schedule_holiday_calendars", + columns: table => new { + schedule_id = table.Column( type: "TEXT", nullable: false ), + holiday_calendar_id = table.Column( type: "TEXT", nullable: false ), + mode = table.Column( type: "TEXT", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_schedule_holiday_calendars", x => new { x.schedule_id, x.holiday_calendar_id } ); + _ = table.ForeignKey( + name: "fk_schedule_holiday_calendars_holiday_calendars_holiday_calendar_id", + column: x => x.holiday_calendar_id, + principalTable: "holiday_calendars", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + _ = table.ForeignKey( + name: "fk_schedule_holiday_calendars_schedules_schedule_id", + column: x => x.schedule_id, + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "schedule_repeat_options", + columns: table => new { + schedule_id = table.Column( type: "TEXT", nullable: false ), + repeat_interval_minutes = table.Column( type: "INTEGER", nullable: false ), + repeat_duration_minutes = table.Column( type: "INTEGER", nullable: false ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_schedule_repeat_options", x => x.schedule_id ); + _ = table.ForeignKey( + name: "fk_schedule_repeat_options_schedules_schedule_id", + column: x => x.schedule_id, + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "schedule_start_datetimeinfo", + columns: table => new { + schedule_id = table.Column( type: "TEXT", nullable: false ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ), + date = table.Column( type: "TEXT", nullable: false ), + time = table.Column( type: "TEXT", nullable: false ), + time_zone = table.Column( type: "TEXT", nullable: false ), + is_fixed_offset = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_schedule_start_datetimeinfo", x => x.schedule_id ); + _ = table.ForeignKey( + name: "fk_schedule_start_datetimeinfo_schedules_schedule_id", + column: x => x.schedule_id, + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "weekly_recurrence", + columns: table => new { + schedule_id = table.Column( type: "TEXT", nullable: false ), + week_interval = table.Column( type: "INTEGER", nullable: false ), + days_of_week = table.Column( type: "INTEGER", nullable: false ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_weekly_recurrence", x => x.schedule_id ); + _ = table.ForeignKey( + name: "fk_weekly_recurrence_schedules_schedule_id", + column: x => x.schedule_id, + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "holiday_dates", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + holiday_calendar_id = table.Column( type: "TEXT", nullable: false ), + holiday_rule_id = table.Column( type: "INTEGER", nullable: true ), + date = table.Column( type: "TEXT", nullable: false ), + name = table.Column( type: "TEXT", maxLength: 256, nullable: false ), + year = table.Column( type: "INTEGER", nullable: false ), + window_start = table.Column( type: "TEXT", nullable: true ), + window_end = table.Column( type: "TEXT", nullable: true ), + window_time_zone_id = table.Column( type: "TEXT", maxLength: 128, nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_holiday_dates", x => x.id ); + _ = table.ForeignKey( + name: "fk_holiday_dates_holiday_calendars_holiday_calendar_id", + column: x => x.holiday_calendar_id, + principalTable: "holiday_calendars", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + _ = table.ForeignKey( + name: "fk_holiday_dates_holiday_rules_holiday_rule_id", + column: x => x.holiday_rule_id, + principalTable: "holiday_rules", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + } ); + + _ = migrationBuilder.CreateTable( + name: "file_monitor_triggers", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + workflow_id = table.Column( type: "INTEGER", nullable: false ), + watch_directory = table.Column( type: "TEXT", maxLength: 500, nullable: false ), + file_pattern = table.Column( type: "TEXT", maxLength: 200, nullable: false ), + event_types = table.Column( type: "TEXT", nullable: false ), + debounce_ms = table.Column( type: "INTEGER", nullable: false ), + enabled = table.Column( type: "INTEGER", nullable: false ), + target_tags = table.Column( type: "TEXT", nullable: true ), + current_version_id = table.Column( type: "INTEGER", nullable: true ), + version_binding_mode = table.Column( type: "TEXT", nullable: false ), + pinned_workflow_version_id = table.Column( type: "INTEGER", nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_file_monitor_triggers", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "trigger_versions", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + trigger_id = table.Column( type: "INTEGER", nullable: false ), + version_number = table.Column( type: "INTEGER", nullable: false ), + definition = table.Column( type: "TEXT", nullable: false ), + created_by_user_id = table.Column( type: "TEXT", maxLength: 450, nullable: true ), + change_description = table.Column( type: "TEXT", maxLength: 500, nullable: true ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_trigger_versions", x => x.id ); + _ = table.ForeignKey( + name: "fk_trigger_versions_file_monitor_triggers_trigger_id", + column: x => x.trigger_id, + principalTable: "file_monitor_triggers", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "jobs", + columns: table => new { + id = table.Column( type: "TEXT", nullable: false ), + task_id = table.Column( type: "INTEGER", nullable: false ), + task_snapshot = table.Column( type: "TEXT", maxLength: 8000, nullable: false ), + runtime_seconds = table.Column( type: "REAL", nullable: false ), + start_time = table.Column( type: "TEXT", nullable: false ), + end_time = table.Column( type: "TEXT", nullable: true ), + success = table.Column( type: "INTEGER", nullable: false ), + agent_connection_id = table.Column( type: "TEXT", nullable: true ), + exit_code = table.Column( type: "INTEGER", nullable: true ), + error_category = table.Column( type: "TEXT", nullable: false ), + output = table.Column( type: "TEXT", maxLength: 2000, nullable: true ), + output_path = table.Column( type: "TEXT", maxLength: 512, nullable: true ), + workflow_run_id = table.Column( type: "TEXT", nullable: true ), + schedule_id = table.Column( type: "TEXT", nullable: true ), + step_id = table.Column( type: "INTEGER", nullable: true ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_jobs", x => x.id ); + _ = table.ForeignKey( + name: "fk_jobs_registered_connections_agent_connection_id", + column: x => x.agent_connection_id, + principalTable: "registered_connections", + principalColumn: "id" ); + _ = table.ForeignKey( + name: "fk_jobs_schedules_schedule_id", + column: x => x.schedule_id, + principalTable: "schedules", + principalColumn: "id" ); + } ); + + _ = migrationBuilder.CreateTable( + name: "notification_subscriptions", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + subscription_type = table.Column( type: "INTEGER", nullable: false ), + workflow_id = table.Column( type: "INTEGER", nullable: true ), + tag = table.Column( type: "TEXT", maxLength: 128, nullable: true ), + event_category_id = table.Column( type: "TEXT", maxLength: 64, nullable: false ), + channel_id = table.Column( type: "INTEGER", nullable: false ), + is_enabled = table.Column( type: "INTEGER", nullable: false ), + created_by_user_id = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + created_utc = table.Column( type: "TEXT", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_notification_subscriptions", x => x.id ); + _ = table.ForeignKey( + name: "fk_notification_subscriptions_notification_channels_channel_id", + column: x => x.channel_id, + principalTable: "notification_channels", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "task_schedules", + columns: table => new { + task_id = table.Column( type: "INTEGER", nullable: false ), + schedule_id = table.Column( type: "TEXT", nullable: false ), + created_at_utc = table.Column( type: "TEXT", nullable: false ), + is_one_time = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_task_schedules", x => new { x.task_id, x.schedule_id } ); + _ = table.ForeignKey( + name: "fk_task_schedules_schedules_schedule_id", + column: x => x.schedule_id, + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "task_versions", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + task_id = table.Column( type: "INTEGER", nullable: false ), + version_number = table.Column( type: "INTEGER", nullable: false ), + definition = table.Column( type: "TEXT", nullable: false ), + created_by_user_id = table.Column( type: "TEXT", maxLength: 450, nullable: true ), + change_description = table.Column( type: "TEXT", maxLength: 500, nullable: true ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_task_versions", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "tasks", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + name = table.Column( type: "TEXT", maxLength: 256, nullable: false ), + description = table.Column( type: "TEXT", maxLength: 2000, nullable: false ), + action_type = table.Column( type: "TEXT", nullable: false ), + workflow_id = table.Column( type: "INTEGER", nullable: true ), + content = table.Column( type: "TEXT", maxLength: 8000, nullable: false ), + arguments = table.Column( type: "TEXT", nullable: true ), + target_tags = table.Column( type: "TEXT", nullable: false ), + enabled = table.Column( type: "INTEGER", nullable: false ), + is_ephemeral = table.Column( type: "INTEGER", nullable: false ), + timeout_minutes = table.Column( type: "INTEGER", nullable: true ), + sync_interval_minutes = table.Column( type: "INTEGER", nullable: false ), + success_criteria = table.Column( type: "TEXT", maxLength: 500, nullable: true ), + action_sub_type = table.Column( type: "TEXT", maxLength: 30, nullable: true ), + action_parameters = table.Column( type: "TEXT", nullable: true ), + current_version_id = table.Column( type: "INTEGER", nullable: true ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_tasks", x => x.id ); + _ = table.ForeignKey( + name: "fk_tasks_task_versions_current_version_id", + column: x => x.current_version_id, + principalTable: "task_versions", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_run_variables", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + workflow_run_id = table.Column( type: "TEXT", nullable: false ), + variable_name = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + value = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ), + produced_by_step_id = table.Column( type: "INTEGER", nullable: true ), + produced_by_job_id = table.Column( type: "TEXT", nullable: true ), + source = table.Column( type: "TEXT", nullable: false ), + created = table.Column( type: "TEXT", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_run_variables", x => x.id ); + _ = table.ForeignKey( + name: "fk_workflow_run_variables_jobs_produced_by_job_id", + column: x => x.produced_by_job_id, + principalTable: "jobs", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_runs", + columns: table => new { + id = table.Column( type: "TEXT", nullable: false ), + workflow_id = table.Column( type: "INTEGER", nullable: false ), + start_time = table.Column( type: "TEXT", nullable: false ), + end_time = table.Column( type: "TEXT", nullable: true ), + status = table.Column( type: "TEXT", nullable: false ), + workflow_version_id = table.Column( type: "INTEGER", nullable: true ), + workflow_name_snapshot = table.Column( type: "TEXT", maxLength: 200, nullable: true ), + workflow_version_snapshot = table.Column( type: "INTEGER", nullable: true ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_runs", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_schedules", + columns: table => new { + workflow_id = table.Column( type: "INTEGER", nullable: false ), + schedule_id = table.Column( type: "TEXT", nullable: false ), + created_at_utc = table.Column( type: "TEXT", nullable: false ), + is_one_time = table.Column( type: "INTEGER", nullable: false ), + workflow_run_id = table.Column( type: "TEXT", nullable: true ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_schedules", x => new { x.workflow_id, x.schedule_id } ); + _ = table.ForeignKey( + name: "fk_workflow_schedules_schedules_schedule_id", + column: x => x.schedule_id, + principalTable: "schedules", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_step_dependencies", + columns: table => new { + step_id = table.Column( type: "INTEGER", nullable: false ), + depends_on_step_id = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_step_dependencies", x => new { x.step_id, x.depends_on_step_id } ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_step_executions", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + workflow_run_id = table.Column( type: "TEXT", nullable: false ), + step_id = table.Column( type: "INTEGER", nullable: false ), + attempt = table.Column( type: "INTEGER", nullable: false ), + status = table.Column( type: "TEXT", nullable: false ), + start_time = table.Column( type: "TEXT", nullable: true ), + end_time = table.Column( type: "TEXT", nullable: true ), + job_id = table.Column( type: "TEXT", nullable: true ), + error_message = table.Column( type: "TEXT", maxLength: 4000, nullable: true ), + skip_reason = table.Column( type: "TEXT", maxLength: 2000, nullable: true ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_step_executions", x => x.id ); + _ = table.ForeignKey( + name: "fk_workflow_step_executions_jobs_job_id", + column: x => x.job_id, + principalTable: "jobs", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + _ = table.ForeignKey( + name: "fk_workflow_step_executions_workflow_runs_workflow_run_id", + column: x => x.workflow_run_id, + principalTable: "workflow_runs", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_steps", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + workflow_id = table.Column( type: "INTEGER", nullable: false ), + task_id = table.Column( type: "INTEGER", nullable: true ), + order = table.Column( type: "INTEGER", nullable: false ), + control_statement = table.Column( type: "TEXT", nullable: false ), + condition_expression = table.Column( type: "TEXT", maxLength: 2000, nullable: true ), + max_iterations = table.Column( type: "INTEGER", nullable: false ), + agent_connection_id_override = table.Column( type: "TEXT", nullable: true ), + dependency_mode = table.Column( type: "TEXT", nullable: false ), + input_variable_name = table.Column( type: "TEXT", maxLength: 128, nullable: true ), + output_variable_name = table.Column( type: "TEXT", maxLength: 128, nullable: true ), + is_composite = table.Column( type: "INTEGER", nullable: false ), + composite_type = table.Column( type: "TEXT", nullable: false ), + child_workflow_id = table.Column( type: "INTEGER", nullable: true ), + iteration_variable_name = table.Column( type: "TEXT", maxLength: 128, nullable: true ), + collection_variable_name = table.Column( type: "TEXT", maxLength: 128, nullable: true ), + task_version_id = table.Column( type: "INTEGER", nullable: true ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_steps", x => x.id ); + _ = table.ForeignKey( + name: "fk_workflow_steps_registered_connections_agent_connection_id_override", + column: x => x.agent_connection_id_override, + principalTable: "registered_connections", + principalColumn: "id" ); + _ = table.ForeignKey( + name: "fk_workflow_steps_task_versions_task_version_id", + column: x => x.task_version_id, + principalTable: "task_versions", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + _ = table.ForeignKey( + name: "fk_workflow_steps_tasks_task_id", + column: x => x.task_id, + principalTable: "tasks", + principalColumn: "id" ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_variables", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + workflow_id = table.Column( type: "INTEGER", nullable: false ), + name = table.Column( type: "TEXT", maxLength: 128, nullable: false ), + description = table.Column( type: "TEXT", maxLength: 500, nullable: true ), + default_value = table.Column( type: "TEXT", nullable: true ), + data_type = table.Column( type: "TEXT", maxLength: 32, nullable: true ), + is_required = table.Column( type: "INTEGER", nullable: false ), + log_redaction = table.Column( type: "INTEGER", nullable: false ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_variables", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflow_versions", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + workflow_id = table.Column( type: "INTEGER", nullable: false ), + version_number = table.Column( type: "INTEGER", nullable: false ), + definition = table.Column( type: "TEXT", nullable: false ), + created_by_user_id = table.Column( type: "TEXT", maxLength: 450, nullable: true ), + change_description = table.Column( type: "TEXT", maxLength: 500, nullable: true ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflow_versions", x => x.id ); + } ); + + _ = migrationBuilder.CreateTable( + name: "workflows", + columns: table => new { + id = table.Column( type: "INTEGER", nullable: false ) + .Annotation( "Sqlite:Autoincrement", true ), + name = table.Column( type: "TEXT", maxLength: 256, nullable: false ), + description = table.Column( type: "TEXT", maxLength: 2000, nullable: false ), + enabled = table.Column( type: "INTEGER", nullable: false ), + target_tags = table.Column( type: "TEXT", nullable: true ), + annotations = table.Column( type: "TEXT", nullable: true ), + parent_step_id = table.Column( type: "INTEGER", nullable: true ), + is_child_workflow = table.Column( type: "INTEGER", nullable: false ), + current_version_id = table.Column( type: "INTEGER", nullable: true ), + created = table.Column( type: "TEXT", nullable: false ), + last_updated = table.Column( type: "TEXT", nullable: false ), + version = table.Column( type: "INTEGER", nullable: false ) + }, + constraints: table => { + _ = table.PrimaryKey( "pk_workflows", x => x.id ); + _ = table.ForeignKey( + name: "fk_workflows_workflow_steps_parent_step_id", + column: x => x.parent_step_id, + principalTable: "workflow_steps", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + _ = table.ForeignKey( + name: "fk_workflows_workflow_versions_current_version_id", + column: x => x.current_version_id, + principalTable: "workflow_versions", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_audit_events_actor_id", + table: "audit_events", + column: "actor_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_audit_events_entity_type_entity_id", + table: "audit_events", + columns: new[] { "entity_type", "entity_id" } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_audit_events_event_category", + table: "audit_events", + column: "event_category" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_audit_events_event_type_id", + table: "audit_events", + column: "event_type_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_audit_events_timestamp_utc", + table: "audit_events", + column: "timestamp_utc", + descending: new bool[0] ); + + _ = migrationBuilder.CreateIndex( + name: "ix_configuration_change_logs_configuration_entry_id", + table: "configuration_change_logs", + column: "configuration_entry_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_configuration_entries_category", + table: "configuration_entries", + column: "category" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_configuration_entries_key_scope_level_scope_id", + table: "configuration_entries", + columns: new[] { "key", "scope_level", "scope_id" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_configuration_entries_scope_id", + table: "configuration_entries", + column: "scope_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_configuration_entries_sync_version", + table: "configuration_entries", + column: "sync_version" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_credential_agent_scopes_agent_connection_id", + table: "credential_agent_scopes", + column: "agent_connection_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_credentials_name", + table: "credentials", + column: "name", + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_file_monitor_triggers_current_version_id", + table: "file_monitor_triggers", + column: "current_version_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_file_monitor_triggers_pinned_workflow_version_id", + table: "file_monitor_triggers", + column: "pinned_workflow_version_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_file_monitor_triggers_workflow_id", + table: "file_monitor_triggers", + column: "workflow_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_holiday_calendars_name", + table: "holiday_calendars", + column: "name", + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_holiday_dates_holiday_calendar_id_date", + table: "holiday_dates", + columns: new[] { "holiday_calendar_id", "date" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_holiday_dates_holiday_rule_id", + table: "holiday_dates", + column: "holiday_rule_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_holiday_rules_holiday_calendar_id", + table: "holiday_rules", + column: "holiday_calendar_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_jobs_agent_connection_id", + table: "jobs", + column: "agent_connection_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_jobs_schedule_id", + table: "jobs", + column: "schedule_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_jobs_step_id", + table: "jobs", + column: "step_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_jobs_task_id", + table: "jobs", + column: "task_id" ); + + _ = migrationBuilder.CreateIndex( + name: "IX_jobs_WorkflowRunId_StepId", + table: "jobs", + columns: new[] { "workflow_run_id", "step_id" } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_channels_name", + table: "notification_channels", + column: "name", + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_deliveries_channel_id", + table: "notification_deliveries", + column: "channel_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_deliveries_status_next_retry_utc", + table: "notification_deliveries", + columns: new[] { "status", "next_retry_utc" } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_subscriptions_channel_id", + table: "notification_subscriptions", + column: "channel_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_subscriptions_event_category_id", + table: "notification_subscriptions", + column: "event_category_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_subscriptions_tag", + table: "notification_subscriptions", + column: "tag" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_subscriptions_workflow_id", + table: "notification_subscriptions", + column: "workflow_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_notification_templates_event_type_id_channel_type", + table: "notification_templates", + columns: new[] { "event_type_id", "channel_type" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_pending_agent_notifications_connection_id_created_utc", + table: "pending_agent_notifications", + columns: new[] { "connection_id", "created_utc" } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_registered_connections_connection_name", + table: "registered_connections", + column: "connection_name" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_registered_connections_remote_url", + table: "registered_connections", + column: "remote_url" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_registration_bundles_bundle_id", + table: "registration_bundles", + column: "bundle_id", + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_retention_policies_entity_type", + table: "retention_policies", + column: "entity_type", + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_saved_filters_page_key_is_shared", + table: "saved_filters", + columns: new[] { "page_key", "is_shared" } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_saved_filters_page_key_owner_id", + table: "saved_filters", + columns: new[] { "page_key", "owner_id" } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_schedule_holiday_calendars_holiday_calendar_id", + table: "schedule_holiday_calendars", + column: "holiday_calendar_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_schedule_holiday_calendars_schedule_id", + table: "schedule_holiday_calendars", + column: "schedule_id", + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_task_schedules_schedule_id", + table: "task_schedules", + column: "schedule_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_task_versions_task_id", + table: "task_versions", + column: "task_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_task_versions_task_id_version_number", + table: "task_versions", + columns: new[] { "task_id", "version_number" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_tasks_current_version_id", + table: "tasks", + column: "current_version_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_tasks_workflow_id", + table: "tasks", + column: "workflow_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_trigger_versions_trigger_id", + table: "trigger_versions", + column: "trigger_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_trigger_versions_trigger_id_version_number", + table: "trigger_versions", + columns: new[] { "trigger_id", "version_number" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_user_notification_preferences_user_id_event_category_id", + table: "user_notification_preferences", + columns: new[] { "user_id", "event_category_id" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_user_notifications_user_id_is_read_created_utc", + table: "user_notifications", + columns: new[] { "user_id", "is_read", "created_utc" }, + descending: new[] { false, false, true } ); + + _ = migrationBuilder.CreateIndex( + name: "ix_user_preferences_user_id_key", + table: "user_preferences", + columns: new[] { "user_id", "key" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_run_variables_produced_by_job_id", + table: "workflow_run_variables", + column: "produced_by_job_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_run_variables_produced_by_step_id", + table: "workflow_run_variables", + column: "produced_by_step_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_run_variables_workflow_run_id_variable_name_version", + table: "workflow_run_variables", + columns: new[] { "workflow_run_id", "variable_name", "version" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_runs_workflow_id", + table: "workflow_runs", + column: "workflow_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_runs_workflow_version_id", + table: "workflow_runs", + column: "workflow_version_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_schedules_schedule_id", + table: "workflow_schedules", + column: "schedule_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_step_dependencies_depends_on_step_id", + table: "workflow_step_dependencies", + column: "depends_on_step_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_step_executions_job_id", + table: "workflow_step_executions", + column: "job_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_step_executions_step_id", + table: "workflow_step_executions", + column: "step_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_step_executions_workflow_run_id", + table: "workflow_step_executions", + column: "workflow_run_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_step_executions_workflow_run_id_step_id_attempt", + table: "workflow_step_executions", + columns: new[] { "workflow_run_id", "step_id", "attempt" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_steps_agent_connection_id_override", + table: "workflow_steps", + column: "agent_connection_id_override" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_steps_child_workflow_id", + table: "workflow_steps", + column: "child_workflow_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_steps_task_id", + table: "workflow_steps", + column: "task_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_steps_task_version_id", + table: "workflow_steps", + column: "task_version_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_steps_workflow_id", + table: "workflow_steps", + column: "workflow_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_variables_workflow_id_name", + table: "workflow_variables", + columns: new[] { "workflow_id", "name" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_versions_workflow_id", + table: "workflow_versions", + column: "workflow_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflow_versions_workflow_id_version_number", + table: "workflow_versions", + columns: new[] { "workflow_id", "version_number" }, + unique: true ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflows_current_version_id", + table: "workflows", + column: "current_version_id" ); + + _ = migrationBuilder.CreateIndex( + name: "ix_workflows_parent_step_id", + table: "workflows", + column: "parent_step_id" ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_file_monitor_triggers_trigger_versions_current_version_id", + table: "file_monitor_triggers", + column: "current_version_id", + principalTable: "trigger_versions", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_file_monitor_triggers_workflow_versions_pinned_workflow_version_id", + table: "file_monitor_triggers", + column: "pinned_workflow_version_id", + principalTable: "workflow_versions", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_file_monitor_triggers_workflows_workflow_id", + table: "file_monitor_triggers", + column: "workflow_id", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_jobs_tasks_task_id", + table: "jobs", + column: "task_id", + principalTable: "tasks", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_jobs_workflow_runs_workflow_run_id", + table: "jobs", + column: "workflow_run_id", + principalTable: "workflow_runs", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_jobs_workflow_steps_step_id", + table: "jobs", + column: "step_id", + principalTable: "workflow_steps", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_notification_subscriptions_workflows_workflow_id", + table: "notification_subscriptions", + column: "workflow_id", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_task_schedules_tasks_task_id", + table: "task_schedules", + column: "task_id", + principalTable: "tasks", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_task_versions_tasks_task_id", + table: "task_versions", + column: "task_id", + principalTable: "tasks", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_tasks_workflows_workflow_id", + table: "tasks", + column: "workflow_id", + principalTable: "workflows", + principalColumn: "id" ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_run_variables_workflow_runs_workflow_run_id", + table: "workflow_run_variables", + column: "workflow_run_id", + principalTable: "workflow_runs", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_run_variables_workflow_steps_produced_by_step_id", + table: "workflow_run_variables", + column: "produced_by_step_id", + principalTable: "workflow_steps", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_runs_workflow_versions_workflow_version_id", + table: "workflow_runs", + column: "workflow_version_id", + principalTable: "workflow_versions", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_runs_workflows_workflow_id", + table: "workflow_runs", + column: "workflow_id", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_schedules_workflows_workflow_id", + table: "workflow_schedules", + column: "workflow_id", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_step_dependencies_workflow_steps_depends_on_step_id", + table: "workflow_step_dependencies", + column: "depends_on_step_id", + principalTable: "workflow_steps", + principalColumn: "id", + onDelete: ReferentialAction.Restrict ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_step_dependencies_workflow_steps_step_id", + table: "workflow_step_dependencies", + column: "step_id", + principalTable: "workflow_steps", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_step_executions_workflow_steps_step_id", + table: "workflow_step_executions", + column: "step_id", + principalTable: "workflow_steps", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_steps_workflows_child_workflow_id", + table: "workflow_steps", + column: "child_workflow_id", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.SetNull ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_steps_workflows_workflow_id", + table: "workflow_steps", + column: "workflow_id", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_variables_workflows_workflow_id", + table: "workflow_variables", + column: "workflow_id", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + + _ = migrationBuilder.AddForeignKey( + name: "fk_workflow_versions_workflows_workflow_id", + table: "workflow_versions", + column: "workflow_id", + principalTable: "workflows", + principalColumn: "id", + onDelete: ReferentialAction.Cascade ); + } + + /// + protected override void Down( MigrationBuilder migrationBuilder ) { + _ = migrationBuilder.DropForeignKey( + name: "fk_workflow_steps_registered_connections_agent_connection_id_override", + table: "workflow_steps" ); + + _ = migrationBuilder.DropForeignKey( + name: "fk_file_monitor_triggers_trigger_versions_current_version_id", + table: "file_monitor_triggers" ); + + _ = migrationBuilder.DropForeignKey( + name: "fk_workflows_workflow_versions_current_version_id", + table: "workflows" ); + + _ = migrationBuilder.DropForeignKey( + name: "fk_tasks_workflows_workflow_id", + table: "tasks" ); + + _ = migrationBuilder.DropForeignKey( + name: "fk_workflow_steps_workflows_child_workflow_id", + table: "workflow_steps" ); + + _ = migrationBuilder.DropForeignKey( + name: "fk_workflow_steps_workflows_workflow_id", + table: "workflow_steps" ); + + _ = migrationBuilder.DropForeignKey( + name: "fk_task_versions_tasks_task_id", + table: "task_versions" ); + + _ = migrationBuilder.DropTable( + name: "audit_events" ); + + _ = migrationBuilder.DropTable( + name: "configuration_change_logs" ); + + _ = migrationBuilder.DropTable( + name: "credential_agent_scopes" ); + + _ = migrationBuilder.DropTable( + name: "daily_recurrence" ); + + _ = migrationBuilder.DropTable( + name: "holiday_dates" ); + + _ = migrationBuilder.DropTable( + name: "monthly_recurrence" ); + + _ = migrationBuilder.DropTable( + name: "notification_deliveries" ); + + _ = migrationBuilder.DropTable( + name: "notification_subscriptions" ); + + _ = migrationBuilder.DropTable( + name: "notification_templates" ); + + _ = migrationBuilder.DropTable( + name: "pending_agent_notifications" ); + + _ = migrationBuilder.DropTable( + name: "registration_bundles" ); + + _ = migrationBuilder.DropTable( + name: "retention_policies" ); + + _ = migrationBuilder.DropTable( + name: "saved_filters" ); + + _ = migrationBuilder.DropTable( + name: "schedule_expiration" ); + + _ = migrationBuilder.DropTable( + name: "schedule_holiday_calendars" ); + + _ = migrationBuilder.DropTable( + name: "schedule_repeat_options" ); + + _ = migrationBuilder.DropTable( + name: "schedule_start_datetimeinfo" ); + + _ = migrationBuilder.DropTable( + name: "task_schedules" ); + + _ = migrationBuilder.DropTable( + name: "user_notification_preferences" ); + + _ = migrationBuilder.DropTable( + name: "user_notifications" ); + + _ = migrationBuilder.DropTable( + name: "user_preferences" ); + + _ = migrationBuilder.DropTable( + name: "weekly_recurrence" ); + + _ = migrationBuilder.DropTable( + name: "workflow_run_variables" ); + + _ = migrationBuilder.DropTable( + name: "workflow_schedules" ); + + _ = migrationBuilder.DropTable( + name: "workflow_step_dependencies" ); + + _ = migrationBuilder.DropTable( + name: "workflow_step_executions" ); + + _ = migrationBuilder.DropTable( + name: "workflow_variables" ); + + _ = migrationBuilder.DropTable( + name: "configuration_entries" ); + + _ = migrationBuilder.DropTable( + name: "credentials" ); + + _ = migrationBuilder.DropTable( + name: "holiday_rules" ); + + _ = migrationBuilder.DropTable( + name: "notification_channels" ); + + _ = migrationBuilder.DropTable( + name: "jobs" ); + + _ = migrationBuilder.DropTable( + name: "holiday_calendars" ); + + _ = migrationBuilder.DropTable( + name: "schedules" ); + + _ = migrationBuilder.DropTable( + name: "workflow_runs" ); + + _ = migrationBuilder.DropTable( + name: "registered_connections" ); + + _ = migrationBuilder.DropTable( + name: "trigger_versions" ); + + _ = migrationBuilder.DropTable( + name: "file_monitor_triggers" ); + + _ = migrationBuilder.DropTable( + name: "workflow_versions" ); + + _ = migrationBuilder.DropTable( + name: "workflows" ); + + _ = migrationBuilder.DropTable( + name: "workflow_steps" ); + + _ = migrationBuilder.DropTable( + name: "tasks" ); + + _ = migrationBuilder.DropTable( + name: "task_versions" ); + } +} diff --git a/src/Werkr.Data/Migrations/Sqlite/SqliteWerkrDbContextModelSnapshot.cs b/src/Werkr.Data/Migrations/Sqlite/SqliteWerkrDbContextModelSnapshot.cs index 07a2d2f..77f3770 100644 --- a/src/Werkr.Data/Migrations/Sqlite/SqliteWerkrDbContextModelSnapshot.cs +++ b/src/Werkr.Data/Migrations/Sqlite/SqliteWerkrDbContextModelSnapshot.cs @@ -2807,6 +2807,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.HasOne("Werkr.Data.Entities.Workflows.WorkflowRun", "WorkflowRun") .WithMany("Jobs") .HasForeignKey("WorkflowRunId") + .OnDelete(DeleteBehavior.SetNull) .HasConstraintName("fk_jobs_workflow_runs_workflow_run_id"); b.Navigation("AgentConnection"); diff --git a/src/Werkr.Data/Seeding/ConfigurationSeeder.cs b/src/Werkr.Data/Seeding/ConfigurationSeeder.cs index 842a00e..1d4c6fc 100644 --- a/src/Werkr.Data/Seeding/ConfigurationSeeder.cs +++ b/src/Werkr.Data/Seeding/ConfigurationSeeder.cs @@ -54,62 +54,62 @@ public static async Task SeedAsync( IServiceProvider services ) { private static ConfigurationEntry[] BuildDefaults( ConfigurationSettings? legacy ) { #pragma warning restore CS0618 DateTime now = DateTime.UtcNow; - const string system = "system"; + const string System = "system"; return [ // ── Server ── Entry( "server.name", legacy?.ServerName ?? "Werkr Server", "string", "server", - "Display name shown in the Blazor UI header.", null, now, system ), + "Display name shown in the Blazor UI header.", null, now, System ), Entry( "server.allowRegistration", legacy?.AllowRegistration.ToString( ).ToLowerInvariant( ) ?? "true", - "boolean", "server", "Whether new agent registrations are accepted.", null, now, system ), + "boolean", "server", "Whether new agent registrations are accepted.", null, now, System ), // ── Agent ── Entry( "agent.heartbeat.intervalSeconds", "30", "number", "agent", - "Seconds between agent heartbeat probes.", """{"min":5}""", now, system ), + "Seconds between agent heartbeat probes.", """{"min":5}""", now, System ), Entry( "agent.heartbeat.missedThreshold", "3", "number", "agent", - "Number of missed heartbeats before an agent is marked offline.", """{"min":1}""", now, system ), + "Number of missed heartbeats before an agent is marked offline.", """{"min":1}""", now, System ), Entry( "agent.concurrency.maxTasks", "5", "number", "agent", - "Maximum concurrent tasks an agent can execute.", """{"min":1}""", now, system ), + "Maximum concurrent tasks an agent can execute.", """{"min":1}""", now, System ), Entry( "agent.output.maxSizeBytes", "10485760", "number", "agent", - "Maximum size in bytes for agent output capture.", """{"min":0}""", now, system ), + "Maximum size in bytes for agent output capture.", """{"min":0}""", now, System ), // ── Security ── Entry( "security.defaultKeySize", legacy?.DefaultKeySize.ToString( ) ?? "4096", "number", "security", - "Default RSA key size in bits.", """{"min":2048,"max":8192}""", now, system ), + "Default RSA key size in bits.", """{"min":2048,"max":8192}""", now, System ), Entry( "security.keyRotation.intervalHours", "168", "number", "security", - "Hours between automatic key rotations.", null, now, system ), + "Hours between automatic key rotations.", null, now, System ), Entry( "security.keyRotation.gracePeriodMinutes", "5", "number", "security", - "Minutes both old and new keys are valid during rotation.", null, now, system ), + "Minutes both old and new keys are valid during rotation.", null, now, System ), // ── Network ── Entry( "network.allowPrivateNetworks", "false", "boolean", "network", - "Whether agents on private networks can register.", null, now, system ), + "Whether agents on private networks can register.", null, now, System ), // ── Workflow ── Entry( "workflow.timeout.defaultMinutes", "60", "number", "workflow", - "Default workflow timeout in minutes.", """{"min":1}""", now, system ), + "Default workflow timeout in minutes.", """{"min":1}""", now, System ), // ── UI (server polling) ── Entry( "server.polling.intervalSeconds", legacy?.PollingIntervalSeconds.ToString( ) ?? "30", "number", "server", "Seconds between dashboard auto-refresh polls.", - """{"min":5,"max":300}""", now, system ), + """{"min":5,"max":300}""", now, System ), Entry( "server.polling.runDetailIntervalSeconds", legacy?.RunDetailPollingIntervalSeconds.ToString( ) ?? "15", "number", "server", "Seconds between run-detail auto-refresh polls.", - """{"min":5}""", now, system ), + """{"min":5}""", now, System ), // ── Retention ── Entry( "retention.sweepIntervalMinutes", "1440", "number", "server", - "Minutes between automatic retention sweep cycles.", """{"min":15}""", now, system ), + "Minutes between automatic retention sweep cycles.", """{"min":15}""", now, System ), // ── Modules (prep for 2.3) ── Entry( "modules.DefaultActions.enabled", "true", "boolean", "security", - "Whether the built-in default action handlers are enabled.", null, now, system ), + "Whether the built-in default action handlers are enabled.", null, now, System ), Entry( "modules.security.trustedPublisherKeys", "[]", "json", "security", - "Trusted module publisher public keys (JSON array).", null, now, system ), + "Trusted module publisher public keys (JSON array).", null, now, System ), Entry( "modules.security.allowUnsigned", "false", "boolean", "security", - "Whether unsigned modules are allowed.", null, now, system ), + "Whether unsigned modules are allowed.", null, now, System ), ]; } diff --git a/src/Werkr.Data/WerkrDbContext.cs b/src/Werkr.Data/WerkrDbContext.cs index 51b0dab..507ab80 100644 --- a/src/Werkr.Data/WerkrDbContext.cs +++ b/src/Werkr.Data/WerkrDbContext.cs @@ -562,7 +562,7 @@ protected override void OnModelCreating( ModelBuilder modelBuilder ) { .OnDelete( DeleteBehavior.SetNull ); } ); - // WerkrJob — StepId FK and index + // WerkrJob — FKs and index _ = modelBuilder.Entity( entity => { _ = entity.HasIndex( e => new { e.WorkflowRunId, e.StepId } ) .HasDatabaseName( "IX_jobs_WorkflowRunId_StepId" ); @@ -571,6 +571,11 @@ protected override void OnModelCreating( ModelBuilder modelBuilder ) { .WithMany( ) .HasForeignKey( e => e.StepId ) .OnDelete( DeleteBehavior.SetNull ); + + _ = entity.HasOne( e => e.WorkflowRun ) + .WithMany( r => r.Jobs ) + .HasForeignKey( e => e.WorkflowRunId ) + .OnDelete( DeleteBehavior.SetNull ); } ); // WorkflowStepExecution — per-run-per-step execution tracking @@ -818,13 +823,15 @@ protected override void ConfigureConventions( ModelConfigurationBuilder configur _ = configurationBuilder.Properties( ) .HaveConversion( ); - // DateTime: EF Core + Npgsql maps to `timestamp with time zone` natively. - // SQLite continues using TEXT (its only type affinity) with proper EF Core metadata. - // No global converter needed. + // DateTime ↔ UTC-normalized (ensures DateTimeKind.Utc on read for both Npgsql and SQLite) + _ = configurationBuilder.Properties( ) + .HaveConversion( ); + _ = configurationBuilder.Properties( ) + .HaveConversion( ); // RSAParameters ↔ string (JSON) _ = configurationBuilder.Properties( ) - .HaveConversion( ); + .HaveConversion( ); // RegistrationStatus ↔ string _ = configurationBuilder.Properties( ) @@ -934,7 +941,31 @@ private void UpdateConcurrencyBeforeSaving( ) { } } - // -- Value Converters -- + // -- Value Converters & Comparers -- + + private sealed class DateTimeUtcConverter( ) + : ValueConverter( + v => v.Kind == DateTimeKind.Utc ? v : v.ToUniversalTime( ), + v => DateTime.SpecifyKind( v, DateTimeKind.Utc ) ); + + private sealed class DateTimeUtcComparer( ) + : ValueComparer( + ( a, b ) => a.Ticks == b.Ticks, + v => v.GetHashCode( ), + v => v ); + + private sealed class NullableDateTimeUtcConverter( ) + : ValueConverter( + v => v.HasValue + ? (v.Value.Kind == DateTimeKind.Utc ? v.Value : v.Value.ToUniversalTime( )) + : null, + v => v.HasValue ? DateTime.SpecifyKind( v.Value, DateTimeKind.Utc ) : null ); + + private sealed class NullableDateTimeUtcComparer( ) + : ValueComparer( + ( a, b ) => a == null ? b == null : b != null && a.Value.Ticks == b.Value.Ticks, + v => v.HasValue ? v.Value.GetHashCode( ) : 0, + v => v ); private sealed class TimeZoneInfoStringConverter( ) : ValueConverter( @@ -949,6 +980,12 @@ private sealed class RSAParametersStringConverter( ) rsa => JsonSerializer.Serialize( rsa, s_rsaJsonOptions ), json => JsonSerializer.Deserialize( json, s_rsaJsonOptions ) ); + private sealed class RSAParametersComparer( ) + : ValueComparer( + ( a, b ) => JsonSerializer.Serialize( a, s_rsaJsonOptions ) == JsonSerializer.Serialize( b, s_rsaJsonOptions ), + v => JsonSerializer.Serialize( v, s_rsaJsonOptions ).GetHashCode( ), + v => JsonSerializer.Deserialize( JsonSerializer.Serialize( v, s_rsaJsonOptions ), s_rsaJsonOptions ) ); + private sealed class RegistrationStatusStringConverter( ) : ValueConverter( status => status.ToString( ), diff --git a/src/Werkr.Data/packages.lock.json b/src/Werkr.Data/packages.lock.json index 6350c36..6a4e5eb 100644 --- a/src/Werkr.Data/packages.lock.json +++ b/src/Werkr.Data/packages.lock.json @@ -334,15 +334,15 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "gSxKLWRZzBpIsEoeUPkxfywNCCvRvl7hkq146XHPk5vOQc9izSf1I+uL1vh4y2U19QPxd9Z8K/8AdWyxYz2lSg==" + "resolved": "8.17.0", + "contentHash": "6NrxQGcZg6IunkN8K2F0UVMavNpfCjbjjjON7PYcL8FwI8aULKUreiHsRX/yaA8j3XsTJnQKUYpoQk5gBjULZw==" }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "MTzXmETkNQPACR7/XCXM1OGM6oU9RkyibqeJRtO9Ndew2LnGjMf9Atqj2VSf4XC27X0FQycUAlzxxEgQMWn2xQ==", + "resolved": "8.17.0", + "contentHash": "w1vjfri0BWqW7RkSZY3ZsqekNfIJJg5BQSFs2j+a+pCXOVrkezmJcn74pT3djwjXJh71577C6wJQgNc2UPz30w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.16.0" + "Microsoft.IdentityModel.Abstractions": "8.17.0" } }, "Microsoft.VisualStudio.SolutionPersistence": { @@ -462,7 +462,7 @@ "Google.Protobuf": "[3.34.1, )", "Microsoft.AspNetCore.Authorization": "[10.0.5, )", "Microsoft.Extensions.Configuration.Json": "[10.0.5, )", - "Microsoft.IdentityModel.Tokens": "[8.16.0, )", + "Microsoft.IdentityModel.Tokens": "[8.17.0, )", "TimeZoneNames": "[7.0.0, )", "Werkr.Common.Configuration": "[1.0.0, )" } @@ -529,12 +529,12 @@ }, "Microsoft.IdentityModel.Tokens": { "type": "CentralTransitive", - "requested": "[8.16.0, )", - "resolved": "8.16.0", - "contentHash": "rtViGJcGsN7WcfUNErwNeQgjuU5cJNl6FDQsfi9TncwO+Epzn0FTfBsg3YuFW1Q0Ch/KPxaVdjLw3/+5Z5ceFQ==", + "requested": "[8.17.0, )", + "resolved": "8.17.0", + "contentHash": "teaW35URIV2x78Tzk+dVJiC4M62/9mQoSEoDjDGoEZmcQa3H2rE+XQpm9Tmdo9KK1Lcrnve4zoyLavl69kCFGg==", "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.IdentityModel.Logging": "8.16.0" + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.17.0" } }, "TimeZoneNames": { diff --git a/src/Werkr.Server/Components/Pages/Account/ChangePassword.razor b/src/Werkr.Server/Components/Pages/Account/ChangePassword.razor index d129daf..9d49578 100644 --- a/src/Werkr.Server/Components/Pages/Account/ChangePassword.razor +++ b/src/Werkr.Server/Components/Pages/Account/ChangePassword.razor @@ -83,8 +83,7 @@ public HttpContext HttpContext { get; set; } = default!; private readonly List _breadcrumbs = [ - new( "Task List", "/" ), - new( "My Account", "/account/manage" ), + new( "Account", "/account/manage" ), new( "Change Password" ) ]; diff --git a/src/Werkr.Server/Components/Pages/Account/Manage/Index.razor b/src/Werkr.Server/Components/Pages/Account/Manage/Index.razor index 27578b7..d7d631a 100644 --- a/src/Werkr.Server/Components/Pages/Account/Manage/Index.razor +++ b/src/Werkr.Server/Components/Pages/Account/Manage/Index.razor @@ -77,7 +77,7 @@ private int _recoveryCodeCount; private string? _errorMessage; private readonly List _breadcrumbs = [ - new( "Task List", "/" ), + new( "Account", "/account/manage" ), new( "My Account" ) ]; diff --git a/src/Werkr.Server/Components/Pages/Account/Manage/Mfa.razor b/src/Werkr.Server/Components/Pages/Account/Manage/Mfa.razor index 45b4aac..54e5db5 100644 --- a/src/Werkr.Server/Components/Pages/Account/Manage/Mfa.razor +++ b/src/Werkr.Server/Components/Pages/Account/Manage/Mfa.razor @@ -100,8 +100,7 @@ [SupplyParameterFromForm] private VerifyCodeModel? _verifyModel { get; set; } private readonly List _breadcrumbs = [ - new( "Task List", "/" ), - new( "My Account", "/account/manage" ), + new( "Account", "/account/manage" ), new( "MFA" ) ]; private readonly List _recoveryCodes = []; diff --git a/src/Werkr.Server/Components/Pages/Admin/CreateUser.razor b/src/Werkr.Server/Components/Pages/Admin/CreateUser.razor index 944a23a..b7ca8c5 100644 --- a/src/Werkr.Server/Components/Pages/Admin/CreateUser.razor +++ b/src/Werkr.Server/Components/Pages/Admin/CreateUser.razor @@ -88,7 +88,7 @@ @code { private readonly List _breadcrumbs = [ - new( "Task List", "/" ), + new( "Administration", "/overview" ), new( "Users", "/admin/users" ), new( "Create" ) ]; diff --git a/src/Werkr.Server/Components/Pages/Admin/EditUser.razor b/src/Werkr.Server/Components/Pages/Admin/EditUser.razor index 6afd4ff..73048fc 100644 --- a/src/Werkr.Server/Components/Pages/Admin/EditUser.razor +++ b/src/Werkr.Server/Components/Pages/Admin/EditUser.razor @@ -85,7 +85,7 @@ private string? _errorMessage; private string? _statusMessage; private List _breadcrumbs = [ - new( "Task List", "/" ), + new( "Administration", "/overview" ), new( "Users", "/admin/users" ), new( "Edit" ) ]; @@ -116,7 +116,7 @@ }; _breadcrumbs = [ - new( "Task List", "/" ), + new( "Administration", "/overview" ), new( "Users", "/admin/users" ), new( _user.Name ) ]; diff --git a/src/Werkr.Server/Components/Pages/Admin/Users.razor b/src/Werkr.Server/Components/Pages/Admin/Users.razor index 6471e2c..e0157b2 100644 --- a/src/Werkr.Server/Components/Pages/Admin/Users.razor +++ b/src/Werkr.Server/Components/Pages/Admin/Users.razor @@ -81,7 +81,7 @@ @code { private readonly List _users = []; private readonly List _breadcrumbs = [ - new( "Task List", "/" ), + new( "Administration", "/overview" ), new( "Users" ) ]; private string? _errorMessage; diff --git a/src/Werkr.Server/Components/Pages/AgentDetail.razor b/src/Werkr.Server/Components/Pages/AgentDetail.razor index 6c6a25b..d026c0c 100644 --- a/src/Werkr.Server/Components/Pages/AgentDetail.razor +++ b/src/Werkr.Server/Components/Pages/AgentDetail.razor @@ -117,7 +117,6 @@ private bool _showFullFingerprint; private string[] _tags = []; private List _breadcrumbs = [ - new( "Task List", "/" ), new( "Agents", "/agents" ), new( "Detail" ) ]; @@ -135,7 +134,6 @@ _editedUrl = _agent?.RemoteUrl ?? string.Empty; if (_agent is not null) { _breadcrumbs = [ - new( "Task List", "/" ), new( "Agents", "/agents" ), new( _agent.ConnectionName ) ]; diff --git a/src/Werkr.Server/Components/Pages/Agents/Index.razor b/src/Werkr.Server/Components/Pages/Agents/Index.razor index 39897d9..9cb4028 100644 --- a/src/Werkr.Server/Components/Pages/Agents/Index.razor +++ b/src/Werkr.Server/Components/Pages/Agents/Index.razor @@ -85,7 +85,7 @@ private string? _errorMessage; private bool _isLoading; private readonly List _breadcrumbs = [ - new( "Task List", "/" ), + new( "Administration", "/overview" ), new( "Agents" ) ]; diff --git a/src/Werkr.Server/Components/Pages/ApiKeys.razor b/src/Werkr.Server/Components/Pages/ApiKeys.razor index 4ef5432..2f14d47 100644 --- a/src/Werkr.Server/Components/Pages/ApiKeys.razor +++ b/src/Werkr.Server/Components/Pages/ApiKeys.razor @@ -134,7 +134,7 @@ @code { private readonly List _breadcrumbs = [ - new( "Task List", "/" ), + new( "Administration", "/overview" ), new( "API Keys" ) ]; diff --git a/src/Werkr.Server/Components/Pages/Dashboard/Calendar.razor b/src/Werkr.Server/Components/Pages/Dashboard/Calendar.razor index 5351260..4662997 100644 --- a/src/Werkr.Server/Components/Pages/Dashboard/Calendar.razor +++ b/src/Werkr.Server/Components/Pages/Dashboard/Calendar.razor @@ -164,7 +164,7 @@ private static readonly string[] s_dayHeaders = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; private readonly List _breadcrumbs = [ - new( "Task List", "/" ), + new( "Workflows", "/" ), new( "Calendar" ) ]; diff --git a/src/Werkr.Server/Components/Pages/Dashboard/TaskList.razor b/src/Werkr.Server/Components/Pages/Dashboard/TaskList.razor index dac1fb4..b07c26d 100644 --- a/src/Werkr.Server/Components/Pages/Dashboard/TaskList.razor +++ b/src/Werkr.Server/Components/Pages/Dashboard/TaskList.razor @@ -164,7 +164,7 @@ private bool _sortAscending = true; private readonly List _breadcrumbs = [ - new( "Task List" ) + new( "Tasks", "/tasks" ) ]; private List FilteredTasks { diff --git a/src/Werkr.Server/Components/Pages/HolidayCalendars/Create.razor b/src/Werkr.Server/Components/Pages/HolidayCalendars/Create.razor index 52a59da..76d24dc 100644 --- a/src/Werkr.Server/Components/Pages/HolidayCalendars/Create.razor +++ b/src/Werkr.Server/Components/Pages/HolidayCalendars/Create.razor @@ -52,7 +52,6 @@ private bool _isSaving; private readonly List _breadcrumbs = [ - new( "Task List", "/" ), new( "Holiday Calendars", "/holiday-calendars" ), new( "Create" ) ]; diff --git a/src/Werkr.Server/Components/Pages/HolidayCalendars/Detail.razor b/src/Werkr.Server/Components/Pages/HolidayCalendars/Detail.razor index 7070369..b32f426 100644 --- a/src/Werkr.Server/Components/Pages/HolidayCalendars/Detail.razor +++ b/src/Werkr.Server/Components/Pages/HolidayCalendars/Detail.razor @@ -137,7 +137,6 @@ private List? _previewDates; private List _breadcrumbs = [ - new( "Task List", "/" ), new( "Holiday Calendars", "/holiday-calendars" ), new( "Detail" ) ]; @@ -150,7 +149,6 @@ if ( _calendar is not null ) { _breadcrumbs = [ - new( "Task List", "/" ), new( "Holiday Calendars", "/holiday-calendars" ), new( _calendar.Name ) ]; diff --git a/src/Werkr.Server/Components/Pages/HolidayCalendars/Edit.razor b/src/Werkr.Server/Components/Pages/HolidayCalendars/Edit.razor index 1912f2e..743229a 100644 --- a/src/Werkr.Server/Components/Pages/HolidayCalendars/Edit.razor +++ b/src/Werkr.Server/Components/Pages/HolidayCalendars/Edit.razor @@ -308,7 +308,6 @@ private string _deleteMessage = ""; private List _breadcrumbs = [ - new( "Task List", "/" ), new( "Holiday Calendars", "/holiday-calendars" ), new( "Edit" ) ]; @@ -331,7 +330,6 @@ } _infoModel = new InfoModel { Name = _calendar.Name, Description = _calendar.Description }; _breadcrumbs = [ - new( "Task List", "/" ), new( "Holiday Calendars", "/holiday-calendars" ), new( _calendar.Name ) ]; diff --git a/src/Werkr.Server/Components/Pages/HolidayCalendars/Index.razor b/src/Werkr.Server/Components/Pages/HolidayCalendars/Index.razor index 8913468..4be0f82 100644 --- a/src/Werkr.Server/Components/Pages/HolidayCalendars/Index.razor +++ b/src/Werkr.Server/Components/Pages/HolidayCalendars/Index.razor @@ -92,7 +92,7 @@ private string _deleteMessage = ""; private readonly List _breadcrumbs = [ - new( "Task List", "/" ), + new( "Administration", "/overview" ), new( "Holiday Calendars" ) ]; diff --git a/src/Werkr.Server/Components/Pages/Home.razor b/src/Werkr.Server/Components/Pages/Home.razor index d5ea95d..fe41279 100644 --- a/src/Werkr.Server/Components/Pages/Home.razor +++ b/src/Werkr.Server/Components/Pages/Home.razor @@ -316,7 +316,7 @@ @code { private readonly List _breadcrumbs = [ - new( "Task List", "/" ), + new( "Administration", "/overview" ), new( "Overview" ) ]; private readonly DateTime _processStartUtc = Process.GetCurrentProcess( ).StartTime.ToUniversalTime( ); diff --git a/src/Werkr.Server/Components/Pages/Jobs/Detail.razor b/src/Werkr.Server/Components/Pages/Jobs/Detail.razor index ce2fa53..d7935a7 100644 --- a/src/Werkr.Server/Components/Pages/Jobs/Detail.razor +++ b/src/Werkr.Server/Components/Pages/Jobs/Detail.razor @@ -99,7 +99,7 @@ private TimeZoneInfo? _displayTz; private readonly List _breadcrumbs = [ - new( "Task List", "/" ), + new( "Tasks", "/tasks" ), new( "Jobs", "/jobs" ), new( "Detail" ) ]; diff --git a/src/Werkr.Server/Components/Pages/Jobs/Index.razor b/src/Werkr.Server/Components/Pages/Jobs/Index.razor index 5c34994..aa9f8ff 100644 --- a/src/Werkr.Server/Components/Pages/Jobs/Index.razor +++ b/src/Werkr.Server/Components/Pages/Jobs/Index.razor @@ -90,7 +90,7 @@ ] ); private readonly List _breadcrumbs = [ - new( "Task List", "/" ), + new( "Tasks", "/tasks" ), new( "Jobs" ) ]; diff --git a/src/Werkr.Server/Components/Pages/Reporting/AuditLog.razor b/src/Werkr.Server/Components/Pages/Reporting/AuditLog.razor index dd7ef09..a5a181e 100644 --- a/src/Werkr.Server/Components/Pages/Reporting/AuditLog.razor +++ b/src/Werkr.Server/Components/Pages/Reporting/AuditLog.razor @@ -67,7 +67,12 @@
- +
@@ -158,7 +163,7 @@ @evt.ActionPerformed - @if (!string.IsNullOrEmpty( evt.Details )) { + @if (!string.IsNullOrEmpty( evt.Details ) && evt.Details != "{}") {