diff --git a/CLAUDE.md b/CLAUDE.md index d0a2a4a6..41367ea6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -142,7 +142,7 @@ catch (DbUpdateConcurrencyException) { TempData["Warning"] = "..."; return ...; - **値変換で文字列として保存する列は、実際に保存しうる値がすべて収まる長さにする** — 上の検査が裸の数値を禁じることで `FieldLengths.EnumCode` の使用を積極的に誘導するため、定数が実際の値より短いと誘導に従った結果として切り詰めが起きる。壊れ方は**プロバイダ依存**(SQL Server / PostgreSQL は例外、SQLite は黙って保存、テストの InMemory は列長の概念すら無い)で、**ビルドも全テストも緑のまま特定の配備先でだけ壊れる**。`ConvertedEnumColumnLengthTests` が、変換器を実際に通した文字列(`HasConversion()` なら enum 名、ラムダ変換なら変換結果)の長さを上限と突き合わせて固定する。**検査範囲は誘導する検査と同じ**にする(誘導する範囲より検証する範囲が狭いと、その差分がそのまま死角になる)。あわせて `EveryLengthLimitedEnumColumn_IsActuallyExamined` が「見るべき列を全部見たか」を**判定とは独立な手がかり**(enum 型でかつ長さ上限を持つ永続化列)で照合する — 同じ判定でガードを書くと、判定が狭まったときにガードも一緒に狭まって「違反ゼロ=緑」で無力化されるため。文字列として保存する enum 列の上限は `FieldLengths.EnumCode`(20)と `FieldLengths.EnumCodeJapanese`(50。`IncidentType` は日本語の DB 文字列を保存するため)。 - **時刻は常に `IClock`**(`Services/IClock.cs`、JST)。`DateTime.Now/Today/UtcNow` を直接呼ばない。永続業務タイムスタンプと `AuditLog.ChangedAt` は運用ローカル時刻(JST)で保存。新規 View では `@inject IClock Clock` + `Clock.Today` を使う。 - **EF Core 本体とプロバイダ実装はメジャー版を全プロジェクトで揃える** — プロバイダ実装(Sqlite / SqlServer / Npgsql)は EF Core の内部 API に結び付くため、本体と同じメジャー版でしか動作保証がない。一方 `Microsoft.AspNetCore.Identity.EntityFrameworkCore` と `Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore` は公開 API しか使わず、メジャー版は .NET のリリース(`net8.0` → `net9.0`)に追随する(9.0.0 は `net9.0` 専用)ため、この規則の対象外にしている(束ねると EF Core 9 への更新が復元不能になる)。一部だけ上げてもビルドもテストも通る(テストは InMemory / SQLite しか触らない)ため、**PostgreSQL 配備でだけ実行時に壊れる**。Dependabot は `.github/dependabot.yml` の `nuget-ef-core`(通常の版更新)と `nuget-ef-core-security`(セキュリティ更新。`applies-to` の既定は version-updates なので別グループが要る)が major も含めて 1 本の PR に束ね、版ズレ自体は `EfCorePackageAlignmentTests` が検出する。検査は `packages.lock.json` の解決済み版を読む(壊れる主役は推移依存の `Relational` で、どの csproj にも直接書かれていないため)。「EF Core 系とは何か」の定義は dependabot.yml の `patterns` が唯一の真実の源で、名前に `EntityFrameworkCore` **または** `EFCore`(`EFCore.NamingConventions` 等)を含むパッケージがパターンから漏れていないことも同テストが固定する(上記 .NET リリース列の 2 つだけは理由付きで明示除外)。**プロバイダを足すときは 3 箇所(上記 2 グループの `patterns` と `nuget-minor-and-patch.exclude-patterns`)すべてに反映する。** 2 グループの `patterns` は集合として一致している必要があるが、`exclude-patterns` 側は書き方を問わず「EF Core 系を 1 つも拾わないこと」だけを求める。判定は文字列の一致ではなく、解決済みのパッケージ ID と `patterns` が表す範囲の代表値の両方が拾われないことで行う(`patterns` 側が前方一致 `"Foo*"` のときは、除外もその前置詞で始まるものをまるごと覆う必要があり、`"Foo"` と `"Foo.*"` のようにドット区切りの形を列挙する書き方では `FooBar` 等の同族が漏れるため足りない。完全一致のパターンは 1 つの ID しか指さないので、その ID を覆えていれば足りる)。そのため`"Npgsql*"` のように広く書くのは可、逆に `"Microsoft.EntityFrameworkCore*"` から末尾 `*` を落とすと(`.Sqlite` / `.SqlServer` / `.Relational` など既存のプロバイダ実装がその時点で漏れるため)通らない。広げすぎて上記 .NET リリース列の 2 つまで minor / patch の束ねから外すのも同テストが検出する。 -- **SQL Server の ADO.NET ドライバ(`Microsoft.Data.SqlClient`)のメジャー版は EF Core の SqlServer プロバイダに合わせる** — このドライバは `Microsoft.EntityFrameworkCore.SqlServer` の実体で、動作保証があるのはプロバイダが宣言したメジャー版に対してだけ。ところが名前に `EntityFrameworkCore` / `EFCore` を含まないため上記の `nuget-ef-core` グループには入らず、メジャー更新が単独 PR として現れる(実際 PR #178 が 5.1.7 → 7.0.2 で出ていた)。**壊れ方は EF Core 本体とプロバイダの版ズレとまったく同じ**で、テストは InMemory / SQLite しか触らないため**ビルドも全テストも緑のまま通り、SQL Server 配備でだけ実行時に壊れる**。`.github/dependabot.yml` の nuget エコシステムの `ignore` が major 更新だけを保留し(minor / patch は csproj の「床値」を上げる更新なので止めない)、`EfCorePackageAlignmentTests` が 5 つを検出する: 解決版と EF Core 宣言版のメジャー不一致 / 床値の後退 / **ピンが直接参照でなくなること**(`packages.lock.json` の `type` が `Direct` から外れる = csproj のピン削除や推移依存への差し戻し)/ 保留の消失 / 保留の効きすぎ(`update-types` の欠落・`versions` の追加・重複エントリ)。**期待値はテストに書かず EF Core の宣言側(`packages.lock.json` の `dependencies`)から読む**ので、EF Core を上げれば検査が自動で追随する。**ただし「床値の後退」の比較相手はあくまで EF Core の宣言(現在 5.1.6)であって、csproj に書かれたピンの値ではない**——ピンを削除した場合は上記の `Direct` 検査が捕まえるが、**ピンの値を「EF Core の宣言版以上・現在のピン未満」の範囲(今なら 5.1.6 以上 5.2.3 未満、たとえば Dependabot の更新を revert して 5.1.7 に戻す変更)へ下げると 5 つすべてを素通りする**。床値検査が比べるのは EF Core の宣言であって直前のピンではないため、`5.1.7 >= 5.1.6` が成立してしまう。期待値を書かない方針と引き換えに残している穴なので、**ピンの値が下がる差分は(下げ幅の大小によらず)レビューで理由を確認する**。ドライバのメジャーを上げたいときは、それを宣言する版の `Microsoft.EntityFrameworkCore.SqlServer` へ同じ変更セットで上げる。 +- **SQL Server の ADO.NET ドライバ(`Microsoft.Data.SqlClient`)のメジャー版は EF Core の SqlServer プロバイダに合わせる** — このドライバは `Microsoft.EntityFrameworkCore.SqlServer` の実体で、動作保証があるのはプロバイダが宣言したメジャー版に対してだけ。ところが名前に `EntityFrameworkCore` / `EFCore` を含まないため上記の `nuget-ef-core` グループには入らず、メジャー更新が単独 PR として現れる(実際 PR #178 が 5.1.7 → 7.0.2 で出ていた)。**壊れ方は EF Core 本体とプロバイダの版ズレとまったく同じ**で、テストは InMemory / SQLite しか触らないため**ビルドも全テストも緑のまま通り、SQL Server 配備でだけ実行時に壊れる**。`.github/dependabot.yml` の nuget エコシステムの `ignore` が major 更新だけを保留し(minor / patch は csproj の「床値」を上げる更新なので止めない)、`EfCorePackageAlignmentTests` が 5 つを検出する: 解決版と EF Core 宣言版のメジャー不一致 / 床値の後退 / **ピンが直接参照でなくなること**(`packages.lock.json` の `type` が `Direct` から外れる = csproj のピン削除や推移依存への差し戻し)/ 保留の消失 / 保留の効きすぎ(`update-types` の欠落・`versions` の追加・重複エントリ)。**期待値はテストに書かず EF Core の宣言側(`packages.lock.json` の `dependencies`)から読む**ので、EF Core を上げれば検査が自動で追随する。**ただし「床値の後退」の比較相手はあくまで EF Core の宣言(現在 5.1.9)であって、csproj に書かれたピンの値ではない**——ピンを削除した場合は上記の `Direct` 検査が捕まえるが、**ピンの値を「EF Core の宣言版以上・現在のピン未満」の範囲(今なら 5.1.9 以上 5.2.3 未満、たとえば 5.2.0 へ下げる変更)へ下げると 5 つすべてを素通りする**。床値検査が比べるのは EF Core の宣言であって直前のピンではないため、`5.2.0 >= 5.1.9` が成立してしまう。期待値を書かない方針と引き換えに残している穴なので、**ピンの値が下がる差分は(下げ幅の大小によらず)レビューで理由を確認する**。ドライバのメジャーを上げたいときは、それを宣言する版の `Microsoft.EntityFrameworkCore.SqlServer` へ同じ変更セットで上げる。 - **`SameDepartmentHandler`(`Authorization/SameDepartmentHandler.cs`)は `Incident` の eager-load が前提**。`PreventiveMeasure` / `CauseAnalysis` で `AuthorizeAsync` する前に `.Include(x => x.Incident)`。**fail-closed**(`Incident` が null なら拒否)。 ### 新規 POST アクション追加時のチェックリスト diff --git a/src/IncidentInsight.Web/IncidentInsight.Web.csproj b/src/IncidentInsight.Web/IncidentInsight.Web.csproj index 8423f3ae..b9b95f36 100644 --- a/src/IncidentInsight.Web/IncidentInsight.Web.csproj +++ b/src/IncidentInsight.Web/IncidentInsight.Web.csproj @@ -12,20 +12,27 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all - - - diff --git a/src/IncidentInsight.Web/packages.lock.json b/src/IncidentInsight.Web/packages.lock.json index 0c97156a..18c6c7cf 100644 --- a/src/IncidentInsight.Web/packages.lock.json +++ b/src/IncidentInsight.Web/packages.lock.json @@ -30,9 +30,9 @@ }, "Microsoft.EntityFrameworkCore.Design": { "type": "Direct", - "requested": "[9.0.19, )", - "resolved": "9.0.19", - "contentHash": "O4o69Xne6dJ7+u21YPxevGt8F2wpxGz2bBiSa/SSyqb2/64OZtcbIOB264fuViRj2XgwzhSGErNP75fRVCk8Zw==", + "requested": "[9.0.20, )", + "resolved": "9.0.20", + "contentHash": "6ys+wQciRl/WfPAOQ3hMUlCwp/ScbuiHA7f843Ax1PZolWUSaZMtYmb1ccgeyxTZ0Yolyz+OMjwtNhBp6gRJ8Q==", "dependencies": { "Humanizer.Core": "2.14.1", "Microsoft.Build.Framework": "17.8.43", @@ -40,44 +40,43 @@ "Microsoft.CodeAnalysis.CSharp": "4.8.0", "Microsoft.CodeAnalysis.CSharp.Workspaces": "4.8.0", "Microsoft.CodeAnalysis.Workspaces.MSBuild": "4.8.0", - "Microsoft.EntityFrameworkCore.Relational": "9.0.19", - "Microsoft.Extensions.Caching.Memory": "9.0.19", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.19", - "Microsoft.Extensions.DependencyModel": "9.0.19", - "Microsoft.Extensions.Logging": "9.0.19", + "Microsoft.EntityFrameworkCore.Relational": "9.0.20", + "Microsoft.Extensions.Caching.Memory": "9.0.20", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.20", + "Microsoft.Extensions.DependencyModel": "9.0.20", + "Microsoft.Extensions.Logging": "9.0.20", "Mono.TextTemplating": "3.0.0", - "System.Text.Json": "9.0.19" + "System.Text.Json": "9.0.20" } }, "Microsoft.EntityFrameworkCore.Sqlite": { "type": "Direct", - "requested": "[9.0.19, )", - "resolved": "9.0.19", - "contentHash": "Icxd0qGY5B9biPEgcsM45KyFrK3xlutOzuR6Fw4/Q+dcEU4JJiyaHBclwf01nxqflFfY8od1TtCov6ES00JINw==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Sqlite.Core": "9.0.19", - "Microsoft.Extensions.Caching.Memory": "9.0.19", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.19", - "Microsoft.Extensions.DependencyModel": "9.0.19", - "Microsoft.Extensions.Logging": "9.0.19", + "requested": "[9.0.20, )", + "resolved": "9.0.20", + "contentHash": "iOYqUXpR8sXhw2Y4sPmEZokI1sXp4AN66FGMnSAxX8kzplrhq/h3VMQB2RP3RWV4Kmgh3YCbTHHK08DCc7d4MA==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Sqlite.Core": "9.0.20", + "Microsoft.Extensions.Caching.Memory": "9.0.20", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.20", + "Microsoft.Extensions.DependencyModel": "9.0.20", + "Microsoft.Extensions.Logging": "9.0.20", "SQLitePCLRaw.bundle_e_sqlite3": "2.1.12", "SQLitePCLRaw.core": "2.1.12", - "System.Text.Json": "9.0.19" + "System.Text.Json": "9.0.20" } }, "Microsoft.EntityFrameworkCore.SqlServer": { "type": "Direct", - "requested": "[9.0.19, )", - "resolved": "9.0.19", - "contentHash": "2i+gG5yBuKj3XhAXjsBo2T0W5rQXkJS2TszX2Sq8xZkHemPre1hyGz2bbFoF7OpVtWMrNlE7MEIAqPmEBY6KAg==", + "requested": "[9.0.20, )", + "resolved": "9.0.20", + "contentHash": "+eovWn4lu35PGniG0hE9/OpKvLAJc8/wNMe6C1QspXXaGBUCAGrYNvdfMkknqpLV089D7gOrdm2YZ1AnH+qPhw==", "dependencies": { - "Microsoft.Data.SqlClient": "5.1.6", - "Microsoft.EntityFrameworkCore.Relational": "9.0.19", - "Microsoft.Extensions.Caching.Memory": "9.0.19", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.19", - "Microsoft.Extensions.Logging": "9.0.19", - "System.Formats.Asn1": "9.0.19", - "System.Text.Json": "9.0.19" + "Microsoft.Data.SqlClient": "5.1.9", + "Microsoft.EntityFrameworkCore.Relational": "9.0.20", + "Microsoft.Extensions.Caching.Memory": "9.0.20", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.20", + "Microsoft.Extensions.Logging": "9.0.20", + "System.Text.Json": "9.0.20" } }, "Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore": { @@ -235,107 +234,107 @@ }, "Microsoft.Data.Sqlite.Core": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "Gja5rRIseFecLqPX9QjmZV5sHL8+wFv3jBHDq7rFCqpjKPFrBN3O/8wp1Hjb9cfSwLR2xpa+O7x0/yUrX/xGDQ==", + "resolved": "9.0.20", + "contentHash": "fh7kGdTZ/3UGydwTFTuCgMQ/JFkkjYrOEU/195ITmp9kddjn0FCNEusAi4XDxOnZ0QiHG6azpgjVjrSxvfPdjw==", "dependencies": { "SQLitePCLRaw.core": "2.1.12" } }, "Microsoft.EntityFrameworkCore": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "qWqqxrfEDfi3C/z0S/ACIA2gUnreRPHX74WE/dVnesbztNesYO4NLy76lE6FV/zDP4vH/pkvDr8h3Mq9+cFv/w==", + "resolved": "9.0.20", + "contentHash": "52/3+48fTVcVQopie1SZLLenAuyrG0Enr1eAEbw05b22dl6nbC8V0UHLFknodJOrVcqdYR1Pf6FMbNvvWuhB5A==", "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "9.0.19", - "Microsoft.EntityFrameworkCore.Analyzers": "9.0.19", - "Microsoft.Extensions.Caching.Memory": "9.0.19", - "Microsoft.Extensions.Logging": "9.0.19" + "Microsoft.EntityFrameworkCore.Abstractions": "9.0.20", + "Microsoft.EntityFrameworkCore.Analyzers": "9.0.20", + "Microsoft.Extensions.Caching.Memory": "9.0.20", + "Microsoft.Extensions.Logging": "9.0.20" } }, "Microsoft.EntityFrameworkCore.Abstractions": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "igPnmVL3DU2ZH/4DNeQqWttNrQpwwg0q6MWj5peZxtl0QVMDSeFtnt2yhhdSffklZKYsAFko1sh/va3z4y7S6A==" + "resolved": "9.0.20", + "contentHash": "ity/Y3MG2hAxK/na+9vp0XQ6kDDwZ8thJfCl+MSBhRNyXgaBtb16SyX2W0uFL44k6BHDmohybJQSRXnjkI4jtA==" }, "Microsoft.EntityFrameworkCore.Analyzers": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "yI5dQuvigJ6ICQECOlJDtrsUYcuDryv3qsZK1i6ZA/IzMzZ/VPkDzjE4r2LivuyVSGnkDRkH2cp4LmrhXARRKw==" + "resolved": "9.0.20", + "contentHash": "WCNEWRZGuYycp0vU9aAfEKGZOr7hGrJP4SpJkl2KzXzKqH9UY/2h6j2L3JYa/AZbKD7EffQGk09NmyEcml/OwQ==" }, "Microsoft.EntityFrameworkCore.Relational": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "KAfYGG4LWRNn1G/vMRydxgOjuZoWUvdd5raUcIia/HPg1jUjlQzS386nUx5gt3YfKxpFJaCGxdsQ1nCZWuYR8A==", + "resolved": "9.0.20", + "contentHash": "84oLYJjAA8hSrwPfkq0cm9dBdf3uFbBwqJVYjmS4zEoKJ87cj/Knyp1iYAHe95ToJHeo8APAPG0OlA6S4GUUlw==", "dependencies": { - "Microsoft.EntityFrameworkCore": "9.0.19", - "Microsoft.Extensions.Caching.Memory": "9.0.19", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.19", - "Microsoft.Extensions.Logging": "9.0.19" + "Microsoft.EntityFrameworkCore": "9.0.20", + "Microsoft.Extensions.Caching.Memory": "9.0.20", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.20", + "Microsoft.Extensions.Logging": "9.0.20" } }, "Microsoft.EntityFrameworkCore.Sqlite.Core": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "yguHtfJ00c6yx8cP6s7bkNOYBXg4xOq8mnlv0k9JHJe0wUTKUtZ5nULr9MndVrd8uGEhHpOot43v8rZKhC9mfw==", + "resolved": "9.0.20", + "contentHash": "vyUXyy2OSAtzZaVSSU/oeE+k/lVj77gUw3PjX9ABHGOz9ySuWQCr5IL9TCc9XWNTmExrSa4uc/7NfOPPooNWMw==", "dependencies": { - "Microsoft.Data.Sqlite.Core": "9.0.19", - "Microsoft.EntityFrameworkCore.Relational": "9.0.19", - "Microsoft.Extensions.Caching.Memory": "9.0.19", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.19", - "Microsoft.Extensions.DependencyModel": "9.0.19", - "Microsoft.Extensions.Logging": "9.0.19", + "Microsoft.Data.Sqlite.Core": "9.0.20", + "Microsoft.EntityFrameworkCore.Relational": "9.0.20", + "Microsoft.Extensions.Caching.Memory": "9.0.20", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.20", + "Microsoft.Extensions.DependencyModel": "9.0.20", + "Microsoft.Extensions.Logging": "9.0.20", "SQLitePCLRaw.core": "2.1.12", - "System.Text.Json": "9.0.19" + "System.Text.Json": "9.0.20" } }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "qe/6m6wxRG+N5xTf4Z3lDBAiVu6oBCUyADJ5OzlFgukD9Vg/6zB3MNnNEFA7amZg8hjcS6F4OZBRmB07A+gmHQ==", + "resolved": "9.0.20", + "contentHash": "OsNAsYqXXI6RlPKnQGqyxYkgtnPJ9gTv+rHjE1FqfyGgKAdZ7kQqR0IXNTYLDNfcWr024ZDw+wKvoljr2KVnwg==", "dependencies": { - "Microsoft.Extensions.Primitives": "9.0.19" + "Microsoft.Extensions.Primitives": "9.0.20" } }, "Microsoft.Extensions.Caching.Memory": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "Y0w5LkBqWkDh5vYTKM+QKlzxpqegEtP86oDhFMXgx4tDkWL2t+rl4h2vxBHkvBtM/gM6PoLK9QCrnoclXtHtVQ==", + "resolved": "9.0.20", + "contentHash": "/bUrdA5TTk17H36s1qBl5eBK1ZtVYkVw27rOpGU7tnSa/yzXG/VSacs6jvBhy4oypO7qo6PTzBqer+0VfJ9XJw==", "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "9.0.19", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.19", - "Microsoft.Extensions.Logging.Abstractions": "9.0.19", - "Microsoft.Extensions.Options": "9.0.19", - "Microsoft.Extensions.Primitives": "9.0.19" + "Microsoft.Extensions.Caching.Abstractions": "9.0.20", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.20", + "Microsoft.Extensions.Logging.Abstractions": "9.0.20", + "Microsoft.Extensions.Options": "9.0.20", + "Microsoft.Extensions.Primitives": "9.0.20" } }, "Microsoft.Extensions.Configuration.Abstractions": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "M6h5lX6QWSSn7FDeRUHePZen/xvxPsuhcX1VpBfefafqavn2BnfxheR7BH5D5AIZGM7Nah0xJKnq2DublD4doQ==", + "resolved": "9.0.20", + "contentHash": "wNR2jEXCTwMKXKi/iWvi3PfRaxtU2j3VmzYHsbVhllQTKRpr1HmHewdwkLhlYk/VatbqDmprW1+tN2O/BA5OKA==", "dependencies": { - "Microsoft.Extensions.Primitives": "9.0.19" + "Microsoft.Extensions.Primitives": "9.0.20" } }, "Microsoft.Extensions.DependencyInjection": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "o/XFYSiV4a7eiCkf7W1GFAviVhHQAPY5bHrQRsNWAPT3GhJ3Af63vcFQjHivIrTNZITlPPaGWhBy7jykKYYyaQ==", + "resolved": "9.0.20", + "contentHash": "SnnIHEHfbYGvd91ZNvYeJcQVSaICdSQWXficKuBkT0Jzfx34XsqZ9aHj0y/7a/eZWY05B3SI0dQA/gKfIVZgWw==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.19" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.20" } }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "XgQ0aVWClYjYSBqbYrKC/xyZ1KHf+VVwNF3+d54jcaqnst30Q//ugs/FJwUztLZiph0gp85g7i/eB0556twO0Q==" + "resolved": "9.0.20", + "contentHash": "EsRc4piTdI3Ti5+cZwdpxn+mHwDCqT+b9ecmgYTTttpHFkYDyc4CenRNC9LrU0A+lTYsbQE8EvWC6sNp1Op0YA==" }, "Microsoft.Extensions.DependencyModel": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "Jpe5up2VLMkjKavOXZzWRXBvy8SUPoFCRuVkq1wYrtVwtzuFEc7saw02dltASs5T8DXp6Ff/DPzmU95mDOiw6g==", + "resolved": "9.0.20", + "contentHash": "bhUlryY1AIFsB9kpR6/KMPWryLHoBPBpRSi79GQa4XVcYyW1PGA3Zi+rdu1wxJ5DWuA1Jr6DAVRgrgPnYOu8eg==", "dependencies": { - "System.Text.Encodings.Web": "9.0.19", - "System.Text.Json": "9.0.19" + "System.Text.Encodings.Web": "9.0.20", + "System.Text.Json": "9.0.20" } }, "Microsoft.Extensions.Diagnostics.Abstractions": { @@ -405,36 +404,36 @@ }, "Microsoft.Extensions.Logging": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "3cnWzJ/FLEhLiW+TJTWtTjVj6fwlsP8OrbJqgOP4J9feAKjmT77vmClakHlej+jnzBgpnVU0+SZwtEIOr+KS6A==", + "resolved": "9.0.20", + "contentHash": "EJXNsngA3CycEVzMwZXkjAMMF4mlh3T8M9UyyJXFjPNSpNtdeKsSWzXtFG2qyC9JIGWFd5r2XlgBXtOCw2JYzQ==", "dependencies": { - "Microsoft.Extensions.DependencyInjection": "9.0.19", - "Microsoft.Extensions.Logging.Abstractions": "9.0.19", - "Microsoft.Extensions.Options": "9.0.19" + "Microsoft.Extensions.DependencyInjection": "9.0.20", + "Microsoft.Extensions.Logging.Abstractions": "9.0.20", + "Microsoft.Extensions.Options": "9.0.20" } }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "RpqMVoZ+NECJxLOZRjWOfjST0mULs4wb848mxG/CS9SMkVL6yi1sSIda4dGcsB01J2jUFd8hNwsaYl1gplU+Cw==", + "resolved": "9.0.20", + "contentHash": "ZTbbB2mz0MxOMVQF7/yKhRD9ok6QR5Kq+Ifsk7XfdGC3zJTfMeJZeKR8/DfnlyvrlQnaWEmMkrnM8d1sBs3afA==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.19", - "System.Diagnostics.DiagnosticSource": "9.0.19" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.20", + "System.Diagnostics.DiagnosticSource": "9.0.20" } }, "Microsoft.Extensions.Options": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "FdPZy4kUSwFlIVZ3EkK9fdHw2RfblUwzflSb4kjVeGf9v2lX9IH+q2RGUovYMR7CVfKMc2y2Db/bZ2b4yiMfOg==", + "resolved": "9.0.20", + "contentHash": "dX5P4j3++0g0iSlV+NhhPuCI/2moNbWvYEb8ZWlO84GEX1fbEg+hygNlHtw7SKHWaTe176ZrmvFsfhIMjB+AUQ==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.19", - "Microsoft.Extensions.Primitives": "9.0.19" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.20", + "Microsoft.Extensions.Primitives": "9.0.20" } }, "Microsoft.Extensions.Primitives": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "9hIg8PQiMnpVFIsEHm25Wi1gBrPa2pS1G75uveyDUVLXrNKqBap9WGwQIgO0s6LUgRAOdsSYnbKbNC5b1G5Pcg==" + "resolved": "9.0.20", + "contentHash": "F9PkV2d5cHwibxxgklXhXtvVgZlPCJ0rkuY+jpa34o3vdUr0DcGX7XQkZouWuoDSZoYF0gUydM778d0wNpwB+Q==" }, "Microsoft.Identity.Client": { "type": "Transitive", @@ -645,19 +644,14 @@ }, "System.Diagnostics.DiagnosticSource": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "UW+FCKPoM15boJwYTsWueNxTgUaqipnZx3z68khaWutVnbtjNpgl9WO7tCcmt7/x3eEYoXn6TZSoHyLwryJUAA==" + "resolved": "9.0.20", + "contentHash": "SQZpMjP079/bzeFvNm0Tna1eOe8Fuh5Df/2GmzCf3hPktPSyduEyuynwrFoQLlZ4dShy1nXfMFfY9GeL7JdF5w==" }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "8.0.0", "contentHash": "fdYxcRjQqTTacKId/2IECojlDSFvp7LP5N78+0z/xH7v/Tuw5ZAxu23Y6PTCRinqyu2ePx+Gn1098NC6jM6d+A==" }, - "System.Formats.Asn1": { - "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "1PCEuJNu4Zn/MFqFN5psqYHjFdkk0cC47NagWhqWNCiMAv3jWwYoFnjBIb7Etbg7nnHG3llEaoCnufrIs+kWXA==" - }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", "resolved": "6.35.0", @@ -669,8 +663,8 @@ }, "System.IO.Pipelines": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "DzFLnKt9CGM8fQ7v92hHHrS+1HhbqDhVw5ju8ZoPY6zONPpVTx7lpxdka7FezO2ivlpSF9blo27IDGjC3sPibg==" + "resolved": "9.0.20", + "contentHash": "YUwc8IFJTnrrmhM1wPteqiN/vcs8jCxNRClhw3zo0jZy23tNUZQfJkPm65U9lN2/hIjknKcb+nLRvLbJnh4IpQ==" }, "System.Memory": { "type": "Transitive", @@ -743,16 +737,16 @@ }, "System.Text.Encodings.Web": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "IfQdKDo8uQ1G0Jfd5lBYjsWoSV1Hq7joOD86B4zgUBPus/M/4ytHbq7OjgUrBrJcDOHDlFnjtuBbMMb6y24kLA==" + "resolved": "9.0.20", + "contentHash": "4mO6B7OuBV17IyVuwhSu7dxjSzuhA2hU0ScveCPKBmMoI9L0NA33G+SaS6/JGIBSWCMBN6p0QP/ZXmkezJUjHw==" }, "System.Text.Json": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "DjVVcIY/dS/rjb0b42nciHjUc0voQfUtrTos+wC0sgdx0VemTpYhx1jdeHowwFghygJ6QdaytcMHwA8jZ6MHFg==", + "resolved": "9.0.20", + "contentHash": "BTRIxPnDLRAQLJI3Q7/ezyfJLp/KAi5k2NwGfAwrkiWPa/nS+bcVu2GX3dXt8jO5u8gcf2AJ04mIhvdtchDG9A==", "dependencies": { - "System.IO.Pipelines": "9.0.19", - "System.Text.Encodings.Web": "9.0.19" + "System.IO.Pipelines": "9.0.20", + "System.Text.Encodings.Web": "9.0.20" } }, "System.Threading.Channels": { diff --git a/tests/IncidentInsight.Tests/IncidentInsight.Tests.csproj b/tests/IncidentInsight.Tests/IncidentInsight.Tests.csproj index b0fdfe5d..47debec4 100644 --- a/tests/IncidentInsight.Tests/IncidentInsight.Tests.csproj +++ b/tests/IncidentInsight.Tests/IncidentInsight.Tests.csproj @@ -15,10 +15,10 @@ - + - + diff --git a/tests/IncidentInsight.Tests/Packaging/EfCorePackageAlignmentTests.cs b/tests/IncidentInsight.Tests/Packaging/EfCorePackageAlignmentTests.cs index cf7f08ca..b5944247 100644 --- a/tests/IncidentInsight.Tests/Packaging/EfCorePackageAlignmentTests.cs +++ b/tests/IncidentInsight.Tests/Packaging/EfCorePackageAlignmentTests.cs @@ -1,4 +1,4 @@ -// packages.lock.json を読むために取り込む +// packages.lock.json を読むために取り込む using System.Text.Json; // dependabot.yml のパターン照合に正規表現を使うため取り込む using System.Text.RegularExpressions; @@ -595,9 +595,9 @@ public void SqlClientPin_StaysADirectReference() // 【なぜ「直接参照であること」まで固定するのか】 // 上の SqlClientPin_StaysWithinEfCoreDeclaredMajor が床値の比較相手にするのは - // EF Core SqlServer の宣言(現在 5.1.6)であって、csproj に書かれたピンの値ではない。 + // EF Core SqlServer の宣言(現在 5.1.9)であって、csproj に書かれたピンの値ではない。 // そのためピンを「冗長だから」と削除すると、解決版が EF Core の宣言どおりに落ちても - // 5.1.6 >= 5.1.6 で床値検査を素通りし、ビルドもテストも緑のまま SQL Server 配備だけが + // 5.1.9 >= 5.1.9 で床値検査を素通りし、ビルドもテストも緑のまま SQL Server 配備だけが // 古いドライバに戻る(このリポジトリで最も起きやすい形の無言の後退)。 // ここで type が Direct であることを見ておけば、削除も「推移依存に戻す」リファクタも // 検出できる。期待する版をテストに書かずに済むので、期待値を宣言側から読む方針とも両立する diff --git a/tests/IncidentInsight.Tests/packages.lock.json b/tests/IncidentInsight.Tests/packages.lock.json index 1d99a1d2..f953e49f 100644 --- a/tests/IncidentInsight.Tests/packages.lock.json +++ b/tests/IncidentInsight.Tests/packages.lock.json @@ -21,29 +21,29 @@ }, "Microsoft.EntityFrameworkCore.InMemory": { "type": "Direct", - "requested": "[9.0.19, )", - "resolved": "9.0.19", - "contentHash": "6hAGqYywlgbpF+9mNNnoVQ1cU5bMIJdWxF6G4RuTtK4REGXi2Kg6J3UF8tFU0fFZWVp2gpTIi6G/lmDKD7VoVQ==", + "requested": "[9.0.20, )", + "resolved": "9.0.20", + "contentHash": "68lDphjXUSPNsU7GGcVw/e7S2ewTqcPxJyE7lJ/Hbhw/+pmYcw0slVuEtZuAXr023Tj1x52fl4LcxEuzvO+7JQ==", "dependencies": { - "Microsoft.EntityFrameworkCore": "9.0.19", - "Microsoft.Extensions.Caching.Memory": "9.0.19", - "Microsoft.Extensions.Logging": "9.0.19" + "Microsoft.EntityFrameworkCore": "9.0.20", + "Microsoft.Extensions.Caching.Memory": "9.0.20", + "Microsoft.Extensions.Logging": "9.0.20" } }, "Microsoft.EntityFrameworkCore.Sqlite": { "type": "Direct", - "requested": "[9.0.19, )", - "resolved": "9.0.19", - "contentHash": "Icxd0qGY5B9biPEgcsM45KyFrK3xlutOzuR6Fw4/Q+dcEU4JJiyaHBclwf01nxqflFfY8od1TtCov6ES00JINw==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Sqlite.Core": "9.0.19", - "Microsoft.Extensions.Caching.Memory": "9.0.19", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.19", - "Microsoft.Extensions.DependencyModel": "9.0.19", - "Microsoft.Extensions.Logging": "9.0.19", + "requested": "[9.0.20, )", + "resolved": "9.0.20", + "contentHash": "iOYqUXpR8sXhw2Y4sPmEZokI1sXp4AN66FGMnSAxX8kzplrhq/h3VMQB2RP3RWV4Kmgh3YCbTHHK08DCc7d4MA==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Sqlite.Core": "9.0.20", + "Microsoft.Extensions.Caching.Memory": "9.0.20", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.20", + "Microsoft.Extensions.DependencyModel": "9.0.20", + "Microsoft.Extensions.Logging": "9.0.20", "SQLitePCLRaw.bundle_e_sqlite3": "2.1.12", "SQLitePCLRaw.core": "2.1.12", - "System.Text.Json": "9.0.19" + "System.Text.Json": "9.0.20" } }, "Microsoft.NET.Test.Sdk": { @@ -175,91 +175,90 @@ }, "Microsoft.Data.Sqlite.Core": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "Gja5rRIseFecLqPX9QjmZV5sHL8+wFv3jBHDq7rFCqpjKPFrBN3O/8wp1Hjb9cfSwLR2xpa+O7x0/yUrX/xGDQ==", + "resolved": "9.0.20", + "contentHash": "fh7kGdTZ/3UGydwTFTuCgMQ/JFkkjYrOEU/195ITmp9kddjn0FCNEusAi4XDxOnZ0QiHG6azpgjVjrSxvfPdjw==", "dependencies": { "SQLitePCLRaw.core": "2.1.12" } }, "Microsoft.EntityFrameworkCore": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "qWqqxrfEDfi3C/z0S/ACIA2gUnreRPHX74WE/dVnesbztNesYO4NLy76lE6FV/zDP4vH/pkvDr8h3Mq9+cFv/w==", + "resolved": "9.0.20", + "contentHash": "52/3+48fTVcVQopie1SZLLenAuyrG0Enr1eAEbw05b22dl6nbC8V0UHLFknodJOrVcqdYR1Pf6FMbNvvWuhB5A==", "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "9.0.19", - "Microsoft.EntityFrameworkCore.Analyzers": "9.0.19", - "Microsoft.Extensions.Caching.Memory": "9.0.19", - "Microsoft.Extensions.Logging": "9.0.19" + "Microsoft.EntityFrameworkCore.Abstractions": "9.0.20", + "Microsoft.EntityFrameworkCore.Analyzers": "9.0.20", + "Microsoft.Extensions.Caching.Memory": "9.0.20", + "Microsoft.Extensions.Logging": "9.0.20" } }, "Microsoft.EntityFrameworkCore.Abstractions": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "igPnmVL3DU2ZH/4DNeQqWttNrQpwwg0q6MWj5peZxtl0QVMDSeFtnt2yhhdSffklZKYsAFko1sh/va3z4y7S6A==" + "resolved": "9.0.20", + "contentHash": "ity/Y3MG2hAxK/na+9vp0XQ6kDDwZ8thJfCl+MSBhRNyXgaBtb16SyX2W0uFL44k6BHDmohybJQSRXnjkI4jtA==" }, "Microsoft.EntityFrameworkCore.Analyzers": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "yI5dQuvigJ6ICQECOlJDtrsUYcuDryv3qsZK1i6ZA/IzMzZ/VPkDzjE4r2LivuyVSGnkDRkH2cp4LmrhXARRKw==" + "resolved": "9.0.20", + "contentHash": "WCNEWRZGuYycp0vU9aAfEKGZOr7hGrJP4SpJkl2KzXzKqH9UY/2h6j2L3JYa/AZbKD7EffQGk09NmyEcml/OwQ==" }, "Microsoft.EntityFrameworkCore.Relational": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "KAfYGG4LWRNn1G/vMRydxgOjuZoWUvdd5raUcIia/HPg1jUjlQzS386nUx5gt3YfKxpFJaCGxdsQ1nCZWuYR8A==", + "resolved": "9.0.20", + "contentHash": "84oLYJjAA8hSrwPfkq0cm9dBdf3uFbBwqJVYjmS4zEoKJ87cj/Knyp1iYAHe95ToJHeo8APAPG0OlA6S4GUUlw==", "dependencies": { - "Microsoft.EntityFrameworkCore": "9.0.19", - "Microsoft.Extensions.Caching.Memory": "9.0.19", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.19", - "Microsoft.Extensions.Logging": "9.0.19" + "Microsoft.EntityFrameworkCore": "9.0.20", + "Microsoft.Extensions.Caching.Memory": "9.0.20", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.20", + "Microsoft.Extensions.Logging": "9.0.20" } }, "Microsoft.EntityFrameworkCore.Sqlite.Core": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "yguHtfJ00c6yx8cP6s7bkNOYBXg4xOq8mnlv0k9JHJe0wUTKUtZ5nULr9MndVrd8uGEhHpOot43v8rZKhC9mfw==", + "resolved": "9.0.20", + "contentHash": "vyUXyy2OSAtzZaVSSU/oeE+k/lVj77gUw3PjX9ABHGOz9ySuWQCr5IL9TCc9XWNTmExrSa4uc/7NfOPPooNWMw==", "dependencies": { - "Microsoft.Data.Sqlite.Core": "9.0.19", - "Microsoft.EntityFrameworkCore.Relational": "9.0.19", - "Microsoft.Extensions.Caching.Memory": "9.0.19", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.19", - "Microsoft.Extensions.DependencyModel": "9.0.19", - "Microsoft.Extensions.Logging": "9.0.19", + "Microsoft.Data.Sqlite.Core": "9.0.20", + "Microsoft.EntityFrameworkCore.Relational": "9.0.20", + "Microsoft.Extensions.Caching.Memory": "9.0.20", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.20", + "Microsoft.Extensions.DependencyModel": "9.0.20", + "Microsoft.Extensions.Logging": "9.0.20", "SQLitePCLRaw.core": "2.1.12", - "System.Text.Json": "9.0.19" + "System.Text.Json": "9.0.20" } }, "Microsoft.EntityFrameworkCore.SqlServer": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "2i+gG5yBuKj3XhAXjsBo2T0W5rQXkJS2TszX2Sq8xZkHemPre1hyGz2bbFoF7OpVtWMrNlE7MEIAqPmEBY6KAg==", + "resolved": "9.0.20", + "contentHash": "+eovWn4lu35PGniG0hE9/OpKvLAJc8/wNMe6C1QspXXaGBUCAGrYNvdfMkknqpLV089D7gOrdm2YZ1AnH+qPhw==", "dependencies": { - "Microsoft.Data.SqlClient": "5.1.6", - "Microsoft.EntityFrameworkCore.Relational": "9.0.19", - "Microsoft.Extensions.Caching.Memory": "9.0.19", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.19", - "Microsoft.Extensions.Logging": "9.0.19", - "System.Formats.Asn1": "9.0.19", - "System.Text.Json": "9.0.19" + "Microsoft.Data.SqlClient": "5.1.9", + "Microsoft.EntityFrameworkCore.Relational": "9.0.20", + "Microsoft.Extensions.Caching.Memory": "9.0.20", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.20", + "Microsoft.Extensions.Logging": "9.0.20", + "System.Text.Json": "9.0.20" } }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "qe/6m6wxRG+N5xTf4Z3lDBAiVu6oBCUyADJ5OzlFgukD9Vg/6zB3MNnNEFA7amZg8hjcS6F4OZBRmB07A+gmHQ==", + "resolved": "9.0.20", + "contentHash": "OsNAsYqXXI6RlPKnQGqyxYkgtnPJ9gTv+rHjE1FqfyGgKAdZ7kQqR0IXNTYLDNfcWr024ZDw+wKvoljr2KVnwg==", "dependencies": { - "Microsoft.Extensions.Primitives": "9.0.19" + "Microsoft.Extensions.Primitives": "9.0.20" } }, "Microsoft.Extensions.Caching.Memory": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "Y0w5LkBqWkDh5vYTKM+QKlzxpqegEtP86oDhFMXgx4tDkWL2t+rl4h2vxBHkvBtM/gM6PoLK9QCrnoclXtHtVQ==", + "resolved": "9.0.20", + "contentHash": "/bUrdA5TTk17H36s1qBl5eBK1ZtVYkVw27rOpGU7tnSa/yzXG/VSacs6jvBhy4oypO7qo6PTzBqer+0VfJ9XJw==", "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "9.0.19", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.19", - "Microsoft.Extensions.Logging.Abstractions": "9.0.19", - "Microsoft.Extensions.Options": "9.0.19", - "Microsoft.Extensions.Primitives": "9.0.19" + "Microsoft.Extensions.Caching.Abstractions": "9.0.20", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.20", + "Microsoft.Extensions.Logging.Abstractions": "9.0.20", + "Microsoft.Extensions.Options": "9.0.20", + "Microsoft.Extensions.Primitives": "9.0.20" } }, "Microsoft.Extensions.Configuration": { @@ -273,10 +272,10 @@ }, "Microsoft.Extensions.Configuration.Abstractions": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "M6h5lX6QWSSn7FDeRUHePZen/xvxPsuhcX1VpBfefafqavn2BnfxheR7BH5D5AIZGM7Nah0xJKnq2DublD4doQ==", + "resolved": "9.0.20", + "contentHash": "wNR2jEXCTwMKXKi/iWvi3PfRaxtU2j3VmzYHsbVhllQTKRpr1HmHewdwkLhlYk/VatbqDmprW1+tN2O/BA5OKA==", "dependencies": { - "Microsoft.Extensions.Primitives": "9.0.19" + "Microsoft.Extensions.Primitives": "9.0.20" } }, "Microsoft.Extensions.Configuration.Binder": { @@ -341,24 +340,24 @@ }, "Microsoft.Extensions.DependencyInjection": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "o/XFYSiV4a7eiCkf7W1GFAviVhHQAPY5bHrQRsNWAPT3GhJ3Af63vcFQjHivIrTNZITlPPaGWhBy7jykKYYyaQ==", + "resolved": "9.0.20", + "contentHash": "SnnIHEHfbYGvd91ZNvYeJcQVSaICdSQWXficKuBkT0Jzfx34XsqZ9aHj0y/7a/eZWY05B3SI0dQA/gKfIVZgWw==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.19" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.20" } }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "XgQ0aVWClYjYSBqbYrKC/xyZ1KHf+VVwNF3+d54jcaqnst30Q//ugs/FJwUztLZiph0gp85g7i/eB0556twO0Q==" + "resolved": "9.0.20", + "contentHash": "EsRc4piTdI3Ti5+cZwdpxn+mHwDCqT+b9ecmgYTTttpHFkYDyc4CenRNC9LrU0A+lTYsbQE8EvWC6sNp1Op0YA==" }, "Microsoft.Extensions.DependencyModel": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "Jpe5up2VLMkjKavOXZzWRXBvy8SUPoFCRuVkq1wYrtVwtzuFEc7saw02dltASs5T8DXp6Ff/DPzmU95mDOiw6g==", + "resolved": "9.0.20", + "contentHash": "bhUlryY1AIFsB9kpR6/KMPWryLHoBPBpRSi79GQa4XVcYyW1PGA3Zi+rdu1wxJ5DWuA1Jr6DAVRgrgPnYOu8eg==", "dependencies": { - "System.Text.Encodings.Web": "9.0.19", - "System.Text.Json": "9.0.19" + "System.Text.Encodings.Web": "9.0.20", + "System.Text.Json": "9.0.20" } }, "Microsoft.Extensions.Diagnostics": { @@ -492,21 +491,21 @@ }, "Microsoft.Extensions.Logging": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "3cnWzJ/FLEhLiW+TJTWtTjVj6fwlsP8OrbJqgOP4J9feAKjmT77vmClakHlej+jnzBgpnVU0+SZwtEIOr+KS6A==", + "resolved": "9.0.20", + "contentHash": "EJXNsngA3CycEVzMwZXkjAMMF4mlh3T8M9UyyJXFjPNSpNtdeKsSWzXtFG2qyC9JIGWFd5r2XlgBXtOCw2JYzQ==", "dependencies": { - "Microsoft.Extensions.DependencyInjection": "9.0.19", - "Microsoft.Extensions.Logging.Abstractions": "9.0.19", - "Microsoft.Extensions.Options": "9.0.19" + "Microsoft.Extensions.DependencyInjection": "9.0.20", + "Microsoft.Extensions.Logging.Abstractions": "9.0.20", + "Microsoft.Extensions.Options": "9.0.20" } }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "RpqMVoZ+NECJxLOZRjWOfjST0mULs4wb848mxG/CS9SMkVL6yi1sSIda4dGcsB01J2jUFd8hNwsaYl1gplU+Cw==", + "resolved": "9.0.20", + "contentHash": "ZTbbB2mz0MxOMVQF7/yKhRD9ok6QR5Kq+Ifsk7XfdGC3zJTfMeJZeKR8/DfnlyvrlQnaWEmMkrnM8d1sBs3afA==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.19", - "System.Diagnostics.DiagnosticSource": "9.0.19" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.20", + "System.Diagnostics.DiagnosticSource": "9.0.20" } }, "Microsoft.Extensions.Logging.Configuration": { @@ -572,11 +571,11 @@ }, "Microsoft.Extensions.Options": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "FdPZy4kUSwFlIVZ3EkK9fdHw2RfblUwzflSb4kjVeGf9v2lX9IH+q2RGUovYMR7CVfKMc2y2Db/bZ2b4yiMfOg==", + "resolved": "9.0.20", + "contentHash": "dX5P4j3++0g0iSlV+NhhPuCI/2moNbWvYEb8ZWlO84GEX1fbEg+hygNlHtw7SKHWaTe176ZrmvFsfhIMjB+AUQ==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.19", - "Microsoft.Extensions.Primitives": "9.0.19" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.20", + "Microsoft.Extensions.Primitives": "9.0.20" } }, "Microsoft.Extensions.Options.ConfigurationExtensions": { @@ -593,8 +592,8 @@ }, "Microsoft.Extensions.Primitives": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "9hIg8PQiMnpVFIsEHm25Wi1gBrPa2pS1G75uveyDUVLXrNKqBap9WGwQIgO0s6LUgRAOdsSYnbKbNC5b1G5Pcg==" + "resolved": "9.0.20", + "contentHash": "F9PkV2d5cHwibxxgklXhXtvVgZlPCJ0rkuY+jpa34o3vdUr0DcGX7XQkZouWuoDSZoYF0gUydM778d0wNpwB+Q==" }, "Microsoft.Identity.Client": { "type": "Transitive", @@ -762,19 +761,14 @@ }, "System.Diagnostics.DiagnosticSource": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "UW+FCKPoM15boJwYTsWueNxTgUaqipnZx3z68khaWutVnbtjNpgl9WO7tCcmt7/x3eEYoXn6TZSoHyLwryJUAA==" + "resolved": "9.0.20", + "contentHash": "SQZpMjP079/bzeFvNm0Tna1eOe8Fuh5Df/2GmzCf3hPktPSyduEyuynwrFoQLlZ4dShy1nXfMFfY9GeL7JdF5w==" }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "8.0.1", "contentHash": "n1ZP7NM2Gkn/MgD8+eOT5MulMj6wfeQMNS2Pizvq5GHCZfjlFMXV2irQlQmJhwA2VABC57M0auudO89Iu2uRLg==" }, - "System.Formats.Asn1": { - "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "1PCEuJNu4Zn/MFqFN5psqYHjFdkk0cC47NagWhqWNCiMAv3jWwYoFnjBIb7Etbg7nnHG3llEaoCnufrIs+kWXA==" - }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", "resolved": "6.35.0", @@ -786,8 +780,8 @@ }, "System.IO.Pipelines": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "DzFLnKt9CGM8fQ7v92hHHrS+1HhbqDhVw5ju8ZoPY6zONPpVTx7lpxdka7FezO2ivlpSF9blo27IDGjC3sPibg==" + "resolved": "9.0.20", + "contentHash": "YUwc8IFJTnrrmhM1wPteqiN/vcs8jCxNRClhw3zo0jZy23tNUZQfJkPm65U9lN2/hIjknKcb+nLRvLbJnh4IpQ==" }, "System.Memory": { "type": "Transitive", @@ -847,16 +841,16 @@ }, "System.Text.Encodings.Web": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "IfQdKDo8uQ1G0Jfd5lBYjsWoSV1Hq7joOD86B4zgUBPus/M/4ytHbq7OjgUrBrJcDOHDlFnjtuBbMMb6y24kLA==" + "resolved": "9.0.20", + "contentHash": "4mO6B7OuBV17IyVuwhSu7dxjSzuhA2hU0ScveCPKBmMoI9L0NA33G+SaS6/JGIBSWCMBN6p0QP/ZXmkezJUjHw==" }, "System.Text.Json": { "type": "Transitive", - "resolved": "9.0.19", - "contentHash": "DjVVcIY/dS/rjb0b42nciHjUc0voQfUtrTos+wC0sgdx0VemTpYhx1jdeHowwFghygJ6QdaytcMHwA8jZ6MHFg==", + "resolved": "9.0.20", + "contentHash": "BTRIxPnDLRAQLJI3Q7/ezyfJLp/KAi5k2NwGfAwrkiWPa/nS+bcVu2GX3dXt8jO5u8gcf2AJ04mIhvdtchDG9A==", "dependencies": { - "System.IO.Pipelines": "9.0.19", - "System.Text.Encodings.Web": "9.0.19" + "System.IO.Pipelines": "9.0.20", + "System.Text.Encodings.Web": "9.0.20" } }, "System.Threading.Tasks.Extensions": { @@ -909,8 +903,8 @@ "dependencies": { "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[8.0.31, )", "Microsoft.Data.SqlClient": "[5.2.3, )", - "Microsoft.EntityFrameworkCore.SqlServer": "[9.0.19, )", - "Microsoft.EntityFrameworkCore.Sqlite": "[9.0.19, )", + "Microsoft.EntityFrameworkCore.SqlServer": "[9.0.20, )", + "Microsoft.EntityFrameworkCore.Sqlite": "[9.0.20, )", "Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore": "[8.0.31, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[9.0.4, )" }